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

(Resolvido) Erro abstrato?


DiabloX3

Pergunta

Olá .

Estou com um novo problema no fortes report só que um pouco estranho

tenho um formulário com o RLREPORT e com os campos linkados

no botao imprimir

frmBaixaPed.qryImpCabecalho.Open;

frmBaixaPed.qryImpVenda.Prepare;
frmBaixaPed.qryImpVenda.Open;

frmBaixaPed.qryImpItens.Prepare;
frmBaixaPed.qryImpItens.Open;

frmRelPedidos.frRelPedidos.Prepare;
frmRelPedidos.frRelPedidos.Preview();

quando chega na hora de mostrar o preview (ou o print, direto) ele dá um Abstract Error e fica uma janelinha como se estivesse sendo carregado mas não carrega nada, daí tenho que finalizar pelo ctrl alt del e fechar o delphi

Já tentei com prepare, sem prepare, sem close nas query, com close, de varias maneiras possiveis...

E já tenho um outro relatorio no fortes feito que funciona da mesma maneira mas não tem problema nenhum.

O RLReport está ligado a qryImpItens e os demais EDITs em seus respectivos campos. Também já experimentei alterar o datasource do relatorio pra qryImpVenda mas sem sucesso.

Todos os dados foram captados do servidor MySql e gravados no IBExpert e a partir do banco local eu gero a impressao.

Alguém sabe dizer o que pode estar acontecendo?

Abraço

Editado por DiabloX3
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

quando chega na hora de mostrar o preview (ou o print, direto) ele dá um Abstract Error e fica uma janelinha como se estivesse sendo carregado mas não carrega nada, daí tenho que finalizar pelo ctrl alt del e fechar o delphi

tenho um outro relatorio no fortes feito que funciona da mesma maneira mas não tem problema nenhum.

O "abstract error" no delphi pode acontecer quando algo não está bem programado ou não faz sentido para a leitura do programa, ou seja ...

Se tiver um form a fechar entes de abrir outro, por exemplo:

form_login.destroy;

form_main.show;

... aqui vai acontecer o "abstract error" ... o correcto será:

form_login.hide;

form_main.show;

ou:

form_main.show;

form_login.close;

Dica de cEpTrOn

OBS: Se voce tem um relatório que é identico e não apresenta erros, então faça uma comparação com os dois códigos

para achar onde está o problema

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Ah Jhonas, eu to marcando aki..

eu já vi onde q era o problema. Mas não daria pra comparar os codigos porque são relatorios diferentes, para outra finalizade, só o básicão era igual

o ruim é que perdi meio dia pra resolver isso.

Só não falo pra deletar o tópico por enquanto (já q não iria ajudar a ngm com o mesmo problema) porque ainda pretendo fazer uns laços de impressao que terei que controlar e mexer com um componente extra-delphi. Se der realmente o problema voce entenderá :P

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Voltando, como imaginei, surgiu o problema.

Como vou mandar imprimir documentos em sequencia, por exemplo 50 pedidos de uma só vez eu dou um .Prepare e depois um .Print no relatório só que assim precsarei selecionar 50x a impressora, e dar 50 OK, ou seja, a cada impressao e eu precisaria tirar isso. É pra ser 1 OK no imprimir e mandar os 50 pedidos em sequencia. Como posso fazer isso?

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
É pra ser 1 OK no imprimir e mandar os 50 pedidos em sequencia. Como posso fazer isso?

um exemplo bem simples

for i:= 1 to copias do
   begin
       QRFicha1.Prepare;
       QRFicha1.Print;
   end;

na variavel copias voce coloca o numero de copias que deseja

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
mandar imprimir documentos em sequencia, por exemplo 50 pedidos de uma só vez

ok... entendi errado ... neste caso voce pode usar um select para os 50 pedidos e depois na hora de imprimir voce deve usar uma banda QRGroup para separá-los , desta maneira cada pedido saira em uma folha e todos de uma só vez.

faça uma busca no forum pela palavra quickreport ou report

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi a necessidade do Group. De qualquer forma não estou conseguindo carregar o relatorio (preview) ou imprimi-lo (print)

qryImpVenda.First;
 while not qryImpVenda.Eof do
 begin
  qryImpItens.Close;
  qryImpItens.ParamByName('P_VEN_COD_PEDIDO').AsString := qryImpVenda.FieldByName('VEN_COD_PEDIDO').AsString;
  qryImpItens.Prepare;
  qryImpItens.Open;

  frmRelPedidos.frRelPedidos.Prepare;
  frmRelPedidos.frRelPedidos.Preview();
  
  qryImpVenda.Next;
Esse é meu botao imprimir. Eu vejo quantos registros tenho em Vendas e a cada um deles eu passo o parametro do Cod. da Venda. Assim eu tenho um formulario com campos que ligados ao DataSource dsImpItens que está ligado a query qryImpItens faz as referencias dos itens listados. O problema é que quando coloco esse laço while e clico em imprimir aparece Carregando relatorio e todas as barrinhas do loading ficam preenchidas (100%) mas não mostra o relatorio na tela e no Print ele deixa eu escolher a impressora mas quando clico em OK ele fica nessa mesma tela e não imprimi. Testei o mesmo comando só que sem o laço de repetição e deu o Preview certinho. Há algum problema com esse laço? Preciso que ele funcione seguindo essa lógica. Só não posso que, na hora dop print, em 30 pedidos a serem impressos, ele me mande selecionar 30x a impressora Essa é a qryImpItens que necessita do parametro cód da venda pra ligar Venda a Item
SELECT P.PRO_CODIGO, P.PRO_DESCRICAO, I.ITE_QTD, I.ITE_VALOR_UNIT, SUM(I.ITE_QTD * I.ITE_VALOR_UNIT) AS TOTAL FROM ITENS_VENDA I, PRODUTO P, VENDAS V  WHERE P.PRO_CODIGO = I.PRO_CODIGO AND V.VEN_COD_PEDIDO = I.VEN_COD_PEDIDO AND V.VEN_COD_PEDIDO = :P_VEN_COD_PEDIDO GROUP BY P.PRO_CODIGO, P.PRO_DESCRICAO, I.ITE_QTD, I.ITE_VALOR_UNIT
edit: eu coloquei um
ShowMessage(qryImpItens.Text);
após o Open da query e mostra
VEN_COD_PEDIDO = ?

mas quando passo o debug, o valor do Cod da Venda é passado para o parametro sim! só que parece q não pega pra abrir. não sei se pode ser esse o problema. E agora?

Abraço

Editado por DiabloX3
Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver.. não estava passando o parametro mesmo.

Agora só falta um detalhe

ok... entendi errado ... neste caso voce pode usar um select para os 50 pedidos e depois na hora de imprimir voce deve usar uma banda QRGroup para separá-los , desta maneira cada pedido saira em uma folha e todos de uma só vez.

Do jeito que estou fazendo se eu tivber 50 pedidos eu tenho que clicar 50x no OK da impressao. Será que não teria alguma forma de mandar imprimir tudo na impressora padrão ao invés de ficar selecionando 1 a 1? É que não entendi como seria a ideia do Group; se tivesse algum jeito de ir na padrão acho que seria mais facil . Estou pesquisando aqui mas ainda não encontrei nada

EDIT: Resolvido. Era só mecher na opção PrintDialog e deixar False :P

Editado por DiabloX3
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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...