Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Relatório realmente impresso na impressora.


William - TI

Pergunta

Bom Dia,

 

Estou precisando de uma ajuda de vocês!

Gostaria saber se realmente foi impresso um relatório na impressora, uso

quickreport, é o seguinte gravo o nome de quem imprimiu em uma tabela porem as vezes os usuario entram no relatorio apenas para tirarem um duvida e não imprimem apenas visualizam o relatorio queira só gravar o nome dele se eles clicarem na impressora para imprimir e se realmente imprimir.

 

isto é possivel?

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Gostaria saber se realmente foi impresso um relatório na impressora, uso

quickreport, é o seguinte gravo o nome de quem imprimiu em uma tabela porem as vezes os usuario entram no relatorio apenas para tirarem um duvida e não imprimem apenas visualizam o relatorio queira só gravar o nome dele se eles clicarem na impressora para imprimir e se realmente imprimir.

Faça uma adaptação ao seu programa

http://www.devmedia.com.br/images/articles...nterManager.zip

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Caro amigo primeiramente gostaria de te agradecer pela atenção é isto mesmo que estou precisando. porem não consegui passar o exemplo para meu projeto sexe abaixo o codigo fonte e o erro erro.

procedure TfrmRecibo.bbImprimirClick(Sender: TObject);

var

hprinter:thandle;

bytesneeded,numjobs,i,ii:cardinal;

pj:pjobs;

begin

application.CreateForm(TqrNew_Rec_imp, qrNew_Rec_imp);

qrNew_Rec_imp.Preview;

hprinter := getcurrentprinterhandle('recibo');

pj := AllocMem(bytesneeded);

if not EnumJobs(hprinter,0,1000,2{1},pj,bytesneeded,bytesneeded,numjobs) then RaiseLastWin32Error;

if numjobs<>0 then begin

if strToint(getstatus(pj^.PagesPrinted))>0 then begin

Showmessage('imprimiu');

end;

end;

ClosePrinter(hprinter);

qrNew_Rec_imp.Destroy;

end;

e o erre a ora que retorno da impressão é este: System error. Code:1801 the printer name is invalid

mais uma vez grato pela atenção

Editado por William - TI
Link para o comentário
Compartilhar em outros sites

  • 0
e o erro agora que retorna da impressão é este: System error. Code:1801 the printer name is invalid

hprinter := getcurrentprinterhandle('recibo');

System error. Code:1801 the printer name is invalid

Erro de Sistema: Code:1801 o nome da impressora é inválido

Error Code 1801

System error code 1801 means "The printer name is invalid." This error code may also display as "ERROR_INVALID_PRINTER_NAME" or as the value 0x709.

Error Code 1801: The printer name is invalid

Source: This message occurs when installing a printer for the first time and / or the printer name does not exist in the printer's folder

Esta mensagem acontece ao instalar uma impressora pela primeira vez e / ou o nome de impressora não existe na pasta de impressoras

Outras Causas:

Um firewall instalado na estação de trabalho está bloqueando a conexão entre o cliente de iPrint e IPPSRVR rodando em um servidor NetWare.

Solução:

Parar o Zone Alarm. O reinicio da estação de trabalho pode ser requerido. Se Zone Alarm não está instalado na estação de trabalho, então procure outro programa firewall rodando na estação de trabalho.

Mais sobre este erro:

http://support.novell.com/docs/Tids/Solutions/10099191.html

http://www.codeguru.com/forum/showthread.php?t=367499

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo mais uma vez realmente estava passando o nome da impressora errado. agora não da mais erro exite algo errado ainda no codigo pois mesmo imprimindo ele não passa pela função segue abaixo o codigo novo.

"procedure TfrmRecibo.bbImprimirClick(Sender: TObject);

var

hprinter:thandle;

bytesneeded,numjobs,i,ii:cardinal;

pj:pjobs;

Driver,Port,Device : String;

DeviceMode : THandle;

begin

//impressora

SetLength(Driver,255);

SetLength(Port,255);

SetLength(Device,255);

Printer.GetPrinter(PChar(Device),PChar(Driver),PChar(Port),DeviceMode);

application.CreateForm(TqrNew_Rec_imp, qrNew_Rec_imp);

qrNew_Rec_imp.Preview;

label1.Caption :=Device;

hprinter := getcurrentprinterhandle(label1.Caption);

pj := AllocMem(bytesneeded);

if not EnumJobs(hprinter,0,1000,2{1},pj,bytesneeded,bytesneeded,numjobs) then RaiseLastWin32Error;

if numjobs<>0 then begin (AQUI ESTA O ERRO SEMPRE RETORNA ZERO MESMO IMPRIMINDO OU NÃO)

if strToint(getstatus(pj^.PagesPrinted))>0 then begin

Showmessage('imprimiu');

end;

end;

ClosePrinter(hprinter);

qrNew_Rec_imp.Destroy;

end;

"

MAIS UMA VEZ GRATO PELA ATENÇÃO

Link para o comentário
Compartilhar em outros sites

  • 0
Amigo mais uma vez realmente estava passando o nome da impressora errado. agora não da mais erro exite algo errado ainda no codigo pois mesmo imprimindo ele não passa pela função

Willlian... não sei se voce entendeu o código que te passei... a função dele é monitorar as impressoras a cada 4 segundos, mostrando na tela o que está acontecendo, tanto em impressoras local ou em rede. É um codigo para ser usado no delphi 7 e como já esta pronto, voce teria apenas que adiciona-lo ao seu projeto.

O seu código não esta monitorando a impressora... o usuário pode imprimir usando o comando print ou simplesmente clicar no botão imprimir do preview.

lembra dessa mensagem ?

{OS DADOS SERAM GRAVADOS EM UMA TABELA CHAMADA "HISTORICO_IMPRESSAO"}

Se voce reparou, o código lista as impressoras no stringgrid, quando voce clica sobre uma delas, passa a haver um monitoramento sobre ela e todos os acontecimentos são guardados em uma tabela. Então dessa maneira voce pode ver o que aconteceu com cada uma delas.

No seu código veja se ocorreu alguma impressão quando voce clicou no botão.

A adaptação que voce quer implica em voce estudar com calma o código e aplicar as mudanças ao seu projeto, mas tente entender o seu funcionamento.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

OK. mais uma vez te agradeço pela atenção.

ate o funcionamento do programa eu entendi copiei algumas funçoes para o meu projeto e e deu os erros que você me ajudou a resolver, o meu problema que estava com um pouco de preça para resolver esta questão (ai fiz dois botõs um visualizar e outro imprimir) por enquanto esta resolvido desta forma mais voltarei a analizar o código como você me sugeriu e descobri o que fiz errado..

muito obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que voce quiz imprimir e ao mesmo tempo ver o resultado. O código que te passei funciona perfeitamente, crie uma janela ou use a mesma do código apenas para monitorar o que está sendo impresso.

OBS: Voce pode incrementar o código para fazer o que está querendo:

queira só gravar o nome dele se eles clicarem na impressora para imprimir e se realmente imprimir.

Como voce viu no stringgrid2 ficam os documentos que serão impressos, mas antes que sejam impressos voce pode guardar em um memo ou uma tabela os nomes

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Gostaria saber se realmente foi impresso um relatório na impressora, uso

quickreport, é o seguinte gravo o nome de quem imprimiu em uma tabela porem as vezes os usuario entram no relatorio apenas para tirarem um duvida e não imprimem apenas visualizam o relatorio queira só gravar o nome dele se eles clicarem na impressora para imprimir e se realmente imprimir.

 

Faça uma adaptação ao seu programa

 

http://www.devmedia.com.br/images/articles...nterManager.zip

 

abraço

o link http://www.devmedia.com.br/images/articles...nterManager.zip esta errado, qual é o certo para eu baixar?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...