Relatório de impressão não chama se tiver no - Available forms
27/06/2020
0
Boa noite pessoal.
Tenho um botão de imprimir com as linhas de código abaixo. Se eu deixar o formulário no auto-create forms ele chama o formulário direitinho, mais quando
eu coloco o formulário no Available forms da a seguinte mensagem de erro:
Esse é apenas um dos relatórios que esta no auto-create, (total de 28 ate o momento) preciso deixar eles no Available forms.
Então onde esta o erro na chamada do relatório. Me ajudem.
Tenho um botão de imprimir com as linhas de código abaixo. Se eu deixar o formulário no auto-create forms ele chama o formulário direitinho, mais quando
eu coloco o formulário no Available forms da a seguinte mensagem de erro:
"Access violation at adreess 008facbd in module 'Projeto.exe'. Read of adreess 000003D0."
procedure TfrmPedidos.btnImprimir0Click(Sender: TObject); begin if dmRel.ibQryRelPedidos.Active = False then begin dmRel.ibQryRelPedidos.Active := True; end; if (editImpressao.Text <> '') then //se for diferente de vazio imprime a busca begin with dmRel.ibQryRelPedidos do begin if RadioButton1.Checked = True then begin Close; SQL.Clear; SQL.Add('select A.id_pedidos, B.id_artigos, B.art_descricao, E.cor_descricao, '); SQL.Add(' A.ped_total, A.ped_valor, G.med_sigla, F.forn_descricao, '); SQL.Add(' H.pro_descricao, A.ped_referencia, C.col_descricao, D.comp_descricao, '); SQL.Add(' A.ped_obs, A.ped_gramatura, A.ped_largura '); SQL.Add('from pedidos AS A '); SQL.Add('inner join artigos AS B on A.idartigos = B.id_artigos '); SQL.Add('inner join colecoes AS C on A.idcolecoes = C.id_colecoes '); SQL.Add('inner join composicao AS D on A.idcomposicao = D.id_composicao '); SQL.Add('inner join cores AS E on A.idcores = E.id_cores '); SQL.Add('inner join fornecedores AS F on A.idfornecedores = F.id_fornecedores '); SQL.Add('inner join medidas AS G on A.idmedidas = G.id_medidas '); SQL.Add('inner join producao AS H on A.idproducao = H.id_producao '); SQL.Add('where a.ID_PEDIDOS =:pPedidos '); ParamByName('pPedidos').Value := StrToInt(editImpressao.Text); Open; //chama o relatorio de impressão frmRelPedido.frxReportAviamentos.PrepareReport(); frmRelPedido.frxReportAviamentos.ShowReport; editImpressao.Text :=''; LabelImpressao.Caption :=''; RadioButton1.Checked := False; end; end; end; end;
Esse é apenas um dos relatórios que esta no auto-create, (total de 28 ate o momento) preciso deixar eles no Available forms.
Então onde esta o erro na chamada do relatório. Me ajudem.
Rubens Pena
Curtir tópico
+ 0
Responder
Posts
27/06/2020
Rubens Pena
Boa noite pessoal.
Tenho um botão de imprimir com as linhas de código abaixo. Se eu deixar o formulário no auto-create forms ele chama o formulário direitinho, mais quando
eu coloco o formulário no Available forms da a seguinte mensagem de erro:
Esse é apenas um dos relatórios que esta no auto-create, (total de 28 ate o momento) preciso deixar eles no Available forms.
Então onde esta o erro na chamada do relatório. Me ajudem.
Tenho um botão de imprimir com as linhas de código abaixo. Se eu deixar o formulário no auto-create forms ele chama o formulário direitinho, mais quando
eu coloco o formulário no Available forms da a seguinte mensagem de erro:
"Access violation at adreess 008facbd in module 'Projeto.exe'. Read of adreess 000003D0."
procedure TfrmPedidos.btnImprimir0Click(Sender: TObject); begin if dmRel.ibQryRelPedidos.Active = False then begin dmRel.ibQryRelPedidos.Active := True; end; if (editImpressao.Text <> '') then //se for diferente de vazio imprime a busca begin with dmRel.ibQryRelPedidos do begin if RadioButton1.Checked = True then begin Close; SQL.Clear; SQL.Add('select A.id_pedidos, B.id_artigos, B.art_descricao, E.cor_descricao, '); SQL.Add(' A.ped_total, A.ped_valor, G.med_sigla, F.forn_descricao, '); SQL.Add(' H.pro_descricao, A.ped_referencia, C.col_descricao, D.comp_descricao, '); SQL.Add(' A.ped_obs, A.ped_gramatura, A.ped_largura '); SQL.Add('from pedidos AS A '); SQL.Add('inner join artigos AS B on A.idartigos = B.id_artigos '); SQL.Add('inner join colecoes AS C on A.idcolecoes = C.id_colecoes '); SQL.Add('inner join composicao AS D on A.idcomposicao = D.id_composicao '); SQL.Add('inner join cores AS E on A.idcores = E.id_cores '); SQL.Add('inner join fornecedores AS F on A.idfornecedores = F.id_fornecedores '); SQL.Add('inner join medidas AS G on A.idmedidas = G.id_medidas '); SQL.Add('inner join producao AS H on A.idproducao = H.id_producao '); SQL.Add('where a.ID_PEDIDOS =:pPedidos '); ParamByName('pPedidos').Value := StrToInt(editImpressao.Text); Open; //chama o relatorio de impressão frmRelPedido.frxReportAviamentos.PrepareReport(); frmRelPedido.frxReportAviamentos.ShowReport; editImpressao.Text :=''; LabelImpressao.Caption :=''; RadioButton1.Checked := False; end; end; end; end;
Esse é apenas um dos relatórios que esta no auto-create, (total de 28 ate o momento) preciso deixar eles no Available forms.
Então onde esta o erro na chamada do relatório. Me ajudem.
Pessoal consegui resolver. estava esquecendo de chamar o formulário
o código agora ficou assim:
procedure TfrmPedidos.btnImprimir0Click(Sender: TObject); begin if dmRel.ibQryRelPedidos.Active = False then begin dmRel.ibQryRelPedidos.Active := True; end; if (editImpressao.Text <> '') then //se for diferente de vazio imprime a busca begin with dmRel.ibQryRelPedidos do begin if RadioButton1.Checked = True then begin Close; SQL.Clear; SQL.Add('select A.id_pedidos, B.id_artigos, B.art_descricao, E.cor_descricao, '); SQL.Add(' A.ped_total, A.ped_valor, G.med_sigla, F.forn_descricao, '); SQL.Add(' H.pro_descricao, A.ped_referencia, C.col_descricao, D.comp_descricao, '); SQL.Add(' A.ped_obs, A.ped_gramatura, A.ped_largura '); SQL.Add('from pedidos AS A '); SQL.Add('inner join artigos AS B on A.idartigos = B.id_artigos '); SQL.Add('inner join colecoes AS C on A.idcolecoes = C.id_colecoes '); SQL.Add('inner join composicao AS D on A.idcomposicao = D.id_composicao '); SQL.Add('inner join cores AS E on A.idcores = E.id_cores '); SQL.Add('inner join fornecedores AS F on A.idfornecedores = F.id_fornecedores '); SQL.Add('inner join medidas AS G on A.idmedidas = G.id_medidas '); SQL.Add('inner join producao AS H on A.idproducao = H.id_producao '); SQL.Add('where a.ID_PEDIDOS =:pPedidos '); ParamByName('pPedidos').Value := StrToInt(editImpressao.Text); Open; //chama o relatorio de impressão frmRelPedido := TfrmRelPedido.Create(self); frmRelPedido.frxReportAviamentos.PrepareReport(); frmRelPedido.frxReportAviamentos.ShowReport; editImpressao.Text :=''; LabelImpressao.Caption :=''; RadioButton1.Checked := False; FreeAndNil(frmRelPedido); end; end; end; end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)