relatório com PReport usando prTxReport não aceita uses
eu uso o PReport com o componente (prTxReport) pra fazer a impressão Dos, é um exelente componente mas estou querendo passar os dados que se encontram em um DataModule e não dá certo, fala que o object not fund mais ele existe sim,
uso assim: [DMDADOS.CDSromaneioentrada.RAZAO_SOCIAL] e dá o erro mas se a tabela estiver no proproio form blz
assim:
[CDSromaneioentrada.RAZAO_SOCIAL]
Preciso adicionar mais algum componente??
alguém sabe como proceder?
Thanks
uso assim: [DMDADOS.CDSromaneioentrada.RAZAO_SOCIAL] e dá o erro mas se a tabela estiver no proproio form blz
assim:
[CDSromaneioentrada.RAZAO_SOCIAL]
Preciso adicionar mais algum componente??
alguém sabe como proceder?
Thanks
Marcos Fernando
Curtidas 0
Respostas
Josemarlourenco
19/10/2005
Marcos, tive o mesmo problema.
Solucionei colocando o par DataSetProvider+ClientDataSet em um DataModule que uso exclusivamente para ´chamar´ (executar) meus relatórios.
Neste DataModule, também coloquei os componentes TprReport (prWin) e TprTxReport (prDos).
Cada relatorio chamado, recebe um DataSet, que é carregado no ClientDataSet.
Todos os meus relatórios, usam o mesmo ClientDataSet.
Segue um exemplo do código de chamada de relatório:
---------------------
procedure TDMPReport.PrintBoletosBaixados(DataSet: TDataSet;Preview: Boolean; p_Inicio, p_Fim: TDateTime);
begin
cds_Rel.Close;
dsp_Rel.DataSet := DataSet;
cds_Rel.Open;
prDos.LoadTemplateFromFile(ExtractFilePath( Application.ExeName ) + ´Relatorios\BoletosBaixados.prt´, False);
prDos.Variables.ByName[´PERIODO´].AsString := DateTimeToStr(p_Inicio) + ´ a ´ + DateTimeToStr(p_Fim);
If prDos.PrepareReport Then
Begin
If Preview Then
prDos.PreviewPreparedReport(True)
Else
prDos.PrintPreparedReport;
End;
end;
--------
A procedure PrintBoletosBaixados deverá se declarado na seção Public do DataModule. Quando chamar esta procedure, deve-se enviar os parametros necessários.
Isto resolveu este tipo de problema.
Só existe outro que até agora não entendi, nem consegui resolver:
Quando o DataSet possui dados com casas decimais, estes são arredondados.
Só que este é outro problema... Se souber como resolvê-lo, fico grato.
Boa sorte.
Josemar
Solucionei colocando o par DataSetProvider+ClientDataSet em um DataModule que uso exclusivamente para ´chamar´ (executar) meus relatórios.
Neste DataModule, também coloquei os componentes TprReport (prWin) e TprTxReport (prDos).
Cada relatorio chamado, recebe um DataSet, que é carregado no ClientDataSet.
Todos os meus relatórios, usam o mesmo ClientDataSet.
Segue um exemplo do código de chamada de relatório:
---------------------
procedure TDMPReport.PrintBoletosBaixados(DataSet: TDataSet;Preview: Boolean; p_Inicio, p_Fim: TDateTime);
begin
cds_Rel.Close;
dsp_Rel.DataSet := DataSet;
cds_Rel.Open;
prDos.LoadTemplateFromFile(ExtractFilePath( Application.ExeName ) + ´Relatorios\BoletosBaixados.prt´, False);
prDos.Variables.ByName[´PERIODO´].AsString := DateTimeToStr(p_Inicio) + ´ a ´ + DateTimeToStr(p_Fim);
If prDos.PrepareReport Then
Begin
If Preview Then
prDos.PreviewPreparedReport(True)
Else
prDos.PrintPreparedReport;
End;
end;
--------
A procedure PrintBoletosBaixados deverá se declarado na seção Public do DataModule. Quando chamar esta procedure, deve-se enviar os parametros necessários.
Isto resolveu este tipo de problema.
Só existe outro que até agora não entendi, nem consegui resolver:
Quando o DataSet possui dados com casas decimais, estes são arredondados.
Só que este é outro problema... Se souber como resolvê-lo, fico grato.
Boa sorte.
Josemar
GOSTEI 0
Marcos Fernando
19/10/2005
Pts mais desse jeito vai ser dificil, optei por achar exelente o componente e me deparo com um problema desse, no meu caso não posso fazer o mesmo!
Vou ver se encontro uma alternativa qualquer coisa te passo!
Grato
Vou ver se encontro uma alternativa qualquer coisa te passo!
Grato
GOSTEI 0