Fórum Fortes Report - Varios Relatorios salvando em PDF #366422

25/11/2008

0

Estou fazendo um monitoramento de compras, onde no final de cada dia, os responsáveis de cada filial da empresa ira receber um PDF com todas as compras do dia.

Problema :lol:

Coloquei a criação do relatorio dentro de um loop (while) e não estou conseguindo gerar todos os relatorios... chega uma hora que ele da um erro e fala que o arquivo ja esta sendo utilizado....... la vai parte do codigo.....



begin
if cdsGerentes.Active = True then
begin
cdsGerentes.Close;
end;
cdsGerentes.Open;
cdsGerentes.First;
while not cdsGerentes.Eof do
begin
if timerConsulta.Enabled = True then
begin
with qrMonitorConsulta do
begin
Close;
SQL.Clear;
//Columas
SQL.Add(´ Select a09.Descricao_Filial As Filial, ´);
SQL.Add(´ Trunc(a00.Data_Pedido) As Data, ´);
SQL.Add(´ a00.Nr_Controle As Pedido, ´);
SQL.Add(´ a10.Descricao_Produto As Produto, ´);
SQL.Add(´ a08.Nome_Cliente As Fornecedor, ´);
SQL.Add(´ a01.Quantidade As Qtd, ´);
SQL.Add(´ (a01.Valor / a01.Quantidade) As Valor_Unitario, ´);
SQL.Add(´ a01.Valor As Valor_Total, ´);
SQL.Add(´ a06.Desc_Ccusto As Aplicado, ´);
SQL.Add(´ a12.Apelido As Comprador, ´);
SQL.Add(´ a05.Nr_Cotacao As Cotacao ´);
//Tabelas
SQL.Add(´ From Pedido_Compras a00, ´);
SQL.Add(´ Pedido_Compra_Itens a01, ´);
SQL.Add(´ Liga_Pedido_Cotacao a02, ´);
SQL.Add(´ Cotacao_Fornecedor_Itens a03, ´);
SQL.Add(´ Cotacao_Compra_Itens a04, ´);
SQL.Add(´ Cotacao_Compras a05, ´);
SQL.Add(´ Alm_Ccusto a06, ´);
SQL.Add(´ Clientes_Enderecos a07, ´);
SQL.Add(´ Clientes a08, ´);
SQL.Add(´ Filiais a09, ´);
SQL.Add(´ Produtos a10, ´);
SQL.Add(´ Compradores a11, ´);
SQL.Add(´ Usuarios a12 ´);
//Parametros
SQL.Add(´ Where a00.Seq_Pla_Pedido = a01.Seq_Pla_Pedido (+)´);
SQL.Add(´ And a01.Seq_Pla_Ped_Item = a02.Seq_Pla_Ped_Item (+)´);
SQL.Add(´ And a02.Seq_Pla_Item_Forn = a03.Seq_Pla_Item_Forn (+)´);
SQL.Add(´ And a03.Seq_Pla_Cot_Item = a04.Seq_Pla_Cot_Item (+)´);
SQL.Add(´ And a04.Seq_Pla_Cotacao = a05.Seq_Pla_Cotacao (+)´);
SQL.Add(´ And a01.Seq_Pla_Ccusto = a06.Seq_Pla_Ccusto (+)´);
SQL.Add(´ And a00.Seq_Pla_Endereco = a07.Seq_Pla_Endereco (+)´);
SQL.Add(´ And a07.Seq_Pla_Cliente = a08.Seq_Pla_Cliente (+)´);
SQL.Add(´ And a00.Cod_Empresa = a09.Cod_Empresa (+)´);
SQL.Add(´ And a00.Cod_Filial = a09.Cod_Filial (+)´);
SQL.Add(´ And a01.Seq_Pla_Produto = a10.Seq_Pla_Produto (+)´);
SQL.Add(´ And a00.Seq_Pla_Comprador = a11.Seq_Pla_Comprador (+)´);
SQL.Add(´ And a11.Seq_Pla_Usuario = a12.Seq_Pla_Usuario (+)´);
//Filtros
//Data
SQL.Add(´ And Trunc(a00.Data_Pedido) = :Data ´);

//Filial
SQL.Add(´ And a00.Cod_Empresa = :Emp ´);
SQL.Add(´ And a00.Cod_Filial = :Filial ´);

//Parametro dos filtros
ParamByName(´Data´) .AsString := DateToStr(Now);
ParamByName(´Emp´) .AsString := ´1´;
ParamByName(´Filial´).AsString := cdsGerentesCOD_FILIAL.AsString;

//SQL FIM
ExecSQL();
end;

with qrtotalmonitor do
begin
Close;
SQL.Clear;
//Columas
SQL.Add(´ Select Sum(Valor_Unitario) As Total_Unitario, ´);
SQL.Add(´ Sum(Valor_Total) As Total_Total, ´);
SQL.Add(´ Sum(Qtd) As Total_Qtd, ´);
SQL.Add(´ Count(Pedido) As Quantidade ´);
SQL.Add(´ From ( ´);
SQL.Add(´ Select a09.Descricao_Filial As Filial, ´);
SQL.Add(´ Trunc(a00.Data_Pedido) As Data, ´);
SQL.Add(´ a00.Nr_Controle As Pedido, ´);
SQL.Add(´ a10.Descricao_Produto As Produto, ´);
SQL.Add(´ a08.Nome_Cliente As Fornecedor, ´);
SQL.Add(´ a01.Quantidade As Qtd, ´);
SQL.Add(´ (a01.Valor / a01.Quantidade) As Valor_Unitario, ´);
SQL.Add(´ a01.Valor As Valor_Total, ´);
SQL.Add(´ a06.Desc_Ccusto As Aplicado, ´);
SQL.Add(´ a12.Apelido As Comprador, ´);
SQL.Add(´ a05.Nr_Cotacao As Cotacao ´);
//Tabelas
SQL.Add(´ From Pedido_Compras a00, ´);
SQL.Add(´ Pedido_Compra_Itens a01, ´);
SQL.Add(´ Liga_Pedido_Cotacao a02, ´);
SQL.Add(´ Cotacao_Fornecedor_Itens a03, ´);
SQL.Add(´ Cotacao_Compra_Itens a04, ´);
SQL.Add(´ Cotacao_Compras a05, ´);
SQL.Add(´ Alm_Ccusto a06, ´);
SQL.Add(´ Clientes_Enderecos a07, ´);
SQL.Add(´ Clientes a08, ´);
SQL.Add(´ Filiais a09, ´);
SQL.Add(´ Produtos a10, ´);
SQL.Add(´ Compradores a11, ´);
SQL.Add(´ Usuarios a12 ´);
//Parametros
SQL.Add(´ Where a00.Seq_Pla_Pedido = a01.Seq_Pla_Pedido (+)´);
SQL.Add(´ And a01.Seq_Pla_Ped_Item = a02.Seq_Pla_Ped_Item (+)´);
SQL.Add(´ And a02.Seq_Pla_Item_Forn = a03.Seq_Pla_Item_Forn (+)´);
SQL.Add(´ And a03.Seq_Pla_Cot_Item = a04.Seq_Pla_Cot_Item (+)´);
SQL.Add(´ And a04.Seq_Pla_Cotacao = a05.Seq_Pla_Cotacao (+)´);
SQL.Add(´ And a01.Seq_Pla_Ccusto = a06.Seq_Pla_Ccusto (+)´);
SQL.Add(´ And a00.Seq_Pla_Endereco = a07.Seq_Pla_Endereco (+)´);
SQL.Add(´ And a07.Seq_Pla_Cliente = a08.Seq_Pla_Cliente (+)´);
SQL.Add(´ And a00.Cod_Empresa = a09.Cod_Empresa (+)´);
SQL.Add(´ And a00.Cod_Filial = a09.Cod_Filial (+)´);
SQL.Add(´ And a01.Seq_Pla_Produto = a10.Seq_Pla_Produto (+)´);
SQL.Add(´ And a00.Seq_Pla_Comprador = a11.Seq_Pla_Comprador (+)´);
SQL.Add(´ And a11.Seq_Pla_Usuario = a12.Seq_Pla_Usuario (+)´);
//Filtros
//Data
SQL.Add(´ And Trunc(a00.Data_Pedido) = :Data ´);

//Filial
SQL.Add(´ And a00.Cod_Empresa = :Emp ´);
SQL.Add(´ And a00.Cod_Filial = :Filial )´);

//Parametro dos filtros
ParamByName(´Data´) .AsString := DateToStr(Now);
ParamByName(´Emp´) .AsString := ´1´;
ParamByName(´Filial´).AsString := cdsGerentesCOD_FILIAL.AsString;

//SQL FIM
ExecSQL();
end;

if cdsMonitorConsulta.Active = True then
begin
cdsMonitorConsulta.Close;
end;
cdsMonitorConsulta.Open;
if cdsTotalMonitor.Active = True then
begin
cdsTotalMonitor.Close;
end;
cdsTotalMonitor.Open;
//Relatorio PDF
//Gerar Arquivo
frmMonitorRelatorio := TfrmMonitorRelatorio.Create(Self);
try
frmMonitorRelatorio.MonitorReport.Prepare;
frmMonitorRelatorio.MonitorReport.SaveToFile(Pchar(´C:\Grupo Scheffer\Sistemas Internos\Analise de Compras\´ + cdsGerentesNOME_FUNCIONARIO.AsString + ´.pdf´));
finally
frmMonitorRelatorio.Free;
end;
cdsGerentes.Next;
if cdsGerentes.Eof then
begin
MessageDlg(´Gerentes Informados. Termino do Monitoramento >>>´ + TimeToStr(Now), mtInformation, [mbOK], 0);
timerConsulta.Enabled := False;
end;
end;
end;
end;

Se puderem me ajudar.....


Rsenci

Rsenci

Responder

Posts

25/11/2008

Fknyght

frmMonitorRelatorio.MonitorReport.SaveToFile(Pchar(´C:\Grupo Scheffer\Sistemas Internos\Analise de Compras\´ + cdsGerentesNOME_FUNCIONARIO.AsString + ´.pdf´));

Baum pode ser este codigo ai, pois se tiver mais de um nome dai o fast vai gerar por cima, pode se
Tenta mudar o nome colocando a hora,minuto e segundo gerado dai nao vai dar duplicidade de arquivo


Responder

Gostei + 0

26/11/2008

Rsenci

Pior que nao é...

Toda vez que executa alguma operação que saia do loop, (SHOWMESSAGE, IMPRIMIR RELATORIO) ele volta ao inicio da consulta... que coisa heim....

Agora ele esta gerando certinho atraves desse codigo..


frmMonitorRelatorio := TfrmMonitorRelatorio.Create(Self);
try
frmMonitorRelatorio.MonitorReport.Prepare;
frmMonitorRelatorio.MonitorReport.Pages.Create(RLPDFFilter1);
frmMonitorRelatorio.MonitorReport.Pages.SaveToFile(´C:\´ + cdsGerentesNOME_FUNCIONARIO.AsString + ´.pdf´);
finally
frmMonitorRelatorio.Free;
frmMonitorRelatorio := nil;
end;


Porem, nao consigo abrir o arquivo que gera......

Se quiserem dar uma olhada no fonte, posso enviar por email....

william.galleti@gmail.com) :shock:


Valew!!!


Responder

Gostei + 0

28/11/2008

Sremulador

você já tenteou gerar um único relatório para testes...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar