Ir para conteúdo
Fórum Script Brasil
  • 0

Relatório entre datas e condicional


Gabriel Cabral

Pergunta

Preciso fazer um relatório entre datas e ele deve ter uma condição para somar os valores de CAIENT quando o campo CAIDIN tiver o valor 'X'

A parte de datas eu já resolvi...mas preciso de ajuda na parte da soma condicional, que não consigo de jeito nenhum..

Meu código está assim:

procedure TfrmSenha.Button1Click(Sender: TObject);
var
totalDin : real;
begin

  dm.RvPrjCaixa.SetParam('DataI',txtDataIni.Text);
  dm.RvPrjCaixa.SetParam('DataF',txtDataFin.Text);

  with dm.QueryRelCaixa do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM ESTACAI.dbf');
    SQL.Add('WHERE CAIDAT BETWEEN :DataIni AND :DataFin');

    ParamByName('DataIni').AsDateTime := StrToDateTime(txtDataIni.Text);
    ParamByName('DataFin').AsDateTime := StrToDateTime(txtDataFin.Text);

    Open;

  end;

  with dm.QueryRelCaixa do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT SUM(CAIENT) AS totalDin FROM ESTACAI.dbf');
    SQL.Add('WHERE CAIDIN = "X"');
    SQL.Add('AND CAIDAT BETWEEN :DataIni AND :DataFin');

    ParamByName('DataIni').AsDateTime := StrToDateTime(txtDataIni.Text);
    ParamByName('DataFin').AsDateTime := StrToDateTime(txtDataFin.Text);

    Open;

    totalDin := dm.QueryRelCaixa['totalDin'];
  end;

  dm.RvPrjCaixa.SetParam('TotalDin',FloatToStr(totalDin));
  }
  dm.RvPrjCaixa.ExecuteReport('rptCaixa');

end;

Se eu executo apenas a parte das datas, o relatorio é exibido perfeitamente.

Mas se eu for executar tambem a parte da somatória, acusa o seguinte erro 'QueryRelCaixa: Field 'CAIDAT' not found'

Se eu tirar o CAIDAT, ele não vai encontrar o próximo campo da Query...

Ou seja, ele não encontra os campos da query quando executo as duas buscas nela.

alguém tem alguma solução ou uma outra maneira de fazer isso???

Agradeço qualquer ajuda!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Mas se eu for executar tambem a parte da somatória, acusa o seguinte :

erro 'QueryRelCaixa: Field 'CAIDAT' not found'

SQL.Add('SELECT * FROM ESTACAI.dbf');
    SQL.Add('WHERE CAIDAT BETWEEN :DataIni AND :DataFin');

Erro 'QueryRelCaixa: Campo 'CAIDAT' não encontrado'

Este erro indica que o campo CAIDAT não faz parte da tabela ESTACAI.DBF ... veja se este campo não esta com outro nome

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Mas o CAIDAT é sim um campo da tabela ESTACAI

Eu adicionei todos os campos de ESTACAI na QueryRelCaixa

Ele diz que não encontrou o CAIDAT porque ele é o primeiro dos campos na query...

Se eu trocar na query e colocar o CAIENT primeiro, ele vai acusar que o CAIENT não foi encontrado...

Parece que não é um erro específico do campo....e sim da query

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz isso, Jhonas, mas continua a mesma coisa...

Parece que o erro se dá devido ao SELECT SUM(CAIENT) AS totalDin FROM ESTACAI

Porque eu troquei por SELECT * FROM ESTACAI e não deu erro algum...e a consulta foi feita...

Queria saber se a atribuição do resultado à variável está correta..

totalDin := dm.QueryRelCaixa['totalDin'];

Pois isso tambem pode estar errado...

Alguma sugestão??!

Link para o comentário
Compartilhar em outros sites

  • 0

Queria saber se a atribuição do resultado à variável está correta..

totalDin := dm.QueryRelCaixa['totalDin'];

totalDin é uma variavel dentro da sua procedure ou é o nome do campo da sua tabela ?

ela é do tipo integer ou string ?

voce tem ser mais claro

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...