ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Chamar QReport direto

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Lippi
Membro Junior
Membro Junior


Registrado: Terça-Feira, 25 de Novembro de 2008
Mensagens: 378

MensagemEnviada: Dom Ago 11, 2019 10:46 am    Assunto: Chamar QReport direto Responder com Citação

Senhores, bom dia.

Tenho uma rotina (código) em que eu posso reprocessar uma movimentação de dados e, já sem seguida, abrir o relatório (QuickReport) e a outra opção é não reprocessar e chamar o QuickReport.

Se eu não reprocessar o movimento, o relatório funciona normalmente. Entretanto, se eu reprocessar dá o seguinte erro:

Project P_Escritorio.exe raised exception class EConvertError with messsage ''' is nota a valid integer value'. Process Stoped ...

Eis o código:

Código:
        If Fm_Dados.CDS_Pgtos.RecordCount>0 then
          begin
            If Opc02<>'GERAL3' then
              begin
                Application.CreateForm(TFm_QRcontaspagar,Fm_QRcontaspagar);
                Fm_QRcontaspagar.QR_contaspagar.Preview;
              end
            else
              begin
                Fm_Dados.CDS_CusTot.Active:=False;
                Fm_Dados.CDS_CusTot.CommandText:=('Select * from CUSTODESPMES where CUSTOCPT='+Comp2+' order by CUSTOCPT, CUSTOMES');
                Fm_Dados.CDS_CusTot.Active:=True;
                If Fm_Dados.CDS_CusTot.RecordCount>0 then
                  begin
                    If Application.MessageBox('Competência já gravada, deseja reprocessar?', 'CONFIRMAÇÃO', MB_YesNo + MB_IconQuestion)=idYes then
                      begin
                        Fm_Dados.CDS_CusTot.First;
                        begin
                          While not Fm_Dados.CDS_CusTot.Eof do
                            begin
                              If Fm_Dados.CDS_CusTotCUSTOCPT.AsString=Comp2 then
                                Fm_Dados.CDS_CusTot.Delete;
                            end;
                            Fm_Dados.CDS_CusTot.Next;
                        end;
                        Fm_Dados.CDS_Pgtos.Active:=False;
                        Fm_Dados.CDS_Pgtos.CommandText:=('Select * from PAGAMTOS where COMPET='+#39+Comp2+#39+' order by COD_CDT');
                        Fm_Dados.CDS_CustoDesp.Active:=True;
                        //
                        Fm_Dados.CDS_CustoDesp.Active:=False;
                        Fm_Dados.CDS_CustoDesp.CommandText:=('Select * from CUSTODESP order by CODIGO');
                        Fm_Dados.CDS_CustoDesp.Active:=True;
                        Cod01:=Fm_Dados.CDS_CustoDespCODIGO.AsString;
                        Tot1:=0;
                        //
                        While not Fm_Dados.CDS_CustoDesp.Eof do
                          begin
                            Cod01:=Fm_Dados.CDS_CustoDespCODIGO.AsString;
                            Fm_Dados.CDS_Pgto05.Active:=False;
                            Fm_Dados.CDS_Pgto05.CommandText:=('Select SUM(VALPAGO) as TTGER from PAGAMTOS where COD_CDT='+Cod01+' and COMPET='+Comp2);
                            Fm_Dados.CDS_Pgto05.Active:=True;
                            //
                            Fm_Dados.CDS_CusTot.Append;
                            Fm_Dados.CDS_CusTotCUSTOMES.AsString:=Comp2+Cod01;
                            Fm_Dados.CDS_CusTotCUSTOCPT.AsString:=Comp2;
                            Fm_Dados.CDS_CusTotCUSTOCDT.AsString:=Cod01;
                            Fm_Dados.CDS_CusTotCUSTOTOT.AsFloat:=Fm_Dados.CDS_Pgto05.FieldByName('TTGER').AsFloat;
                            Fm_Dados.CDS_CusTot.Post;
                            Fm_Dados.CDS_CusTot.ApplyUpdates(-1);
                            Fm_Dados.CDS_CustoDesp.Next;
                          end;
                      end;
                  end;
                Fm_QRcustomes:=TFm_QRcustomes.Create(Self);
                Fm_QRcustomes.QR_customes.Prepare;
                Fm_QRcustomes.QRLab_TtFl.Caption:=' / '+IntToStr(Fm_QRcustomes.QR_customes.QRPrinter.PageCount);
                Fm_QRcustomes.QR_customes.Preview;
              end;
          end
        else
          begin
            ShowMessage('Nenhum registro nessa referência!');
            Edit_Busca.Clear;
            Edit_Busca.SetFocus;
          end;
        Fm_Dados.CDS_Pgtos.Active:=False;
    end;


O quê fazer para dar certo também após o reprocessamento?

Desde já, muito obrigado.
Lippi.
_________________
Longo e difícil é o caminho que, das trevas, nos leva à luz.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Ago 12, 2019 9:34 am    Assunto: Responder com Citação

Bom dia,

Comp2 é uma variável? Em que parte do código é atribuído algum valor para essa variável e que valor é atribuído?
Qual é o tipo de dados do campo CUSTOCPT da tabela CUSTODESPMES e do campo COMPET da tabela PAGAMTOS?
Notei que em uma query você está deixando o valor da variável Comp2 entre aspas e na outra não, o que me parece estranho.


Editado pela última vez por imex em Ter Mar 07, 2023 5:52 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Lippi
Membro Junior
Membro Junior


Registrado: Terça-Feira, 25 de Novembro de 2008
Mensagens: 378

MensagemEnviada: Seg Ago 12, 2019 8:21 pm    Assunto: Vamos lá! Responder com Citação

Imex, boa noite.

Comp2 é uma variavel que recebe (via MaskEdit) uma competência, como JULHO/2019 --> no código postado já recebeu 201907

CUSTOCPT [CUSTODESPMES] é do tipo CHAR [6] - Código de despesa ou Custo.

COMPET [PAGAMTOS] é a competência: no caso 201907

Quanto "em uma query você está deixando o valor da variável Comp2 entre aspas e na outra não, o que me parece estranho." --> já deixei as duas sem aspas.

O fato é que se eu deprezo o reprocessamento, ou seja, se opto pelo relatório direto, fica tudo correto. Se eu reprocesso, da pau.

Imex, fiz alguns teste e o erro acontece nessa linha:
Fm_QRcustomes.QR_customes.Prepare;


Abraço.
Lippi
_________________
Longo e difícil é o caminho que, das trevas, nos leva à luz.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 13, 2019 11:53 am    Assunto: Responder com Citação

Bom dia,

Acredito que o erro está nas linhas de código que estão nos eventos do QuickReport já que o erro está ocorrendo ao executar o Prepare.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB