Relatório de impressão não chama se tiver no - Available forms
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
Curtidas 0
Respostas
Rubens Pena
27/06/2020
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; GOSTEI 0