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

(Resolvido) Soma Condicional no Rave Reports


Gabriel Cabral

Pergunta

Estou a muito tempo tentando ajustar isso mas não consigo de jeito nenhum..

Eu uso uma query [QueryRelCaixa] para fazer uma busca e preencher o relatório.

A busca é feita desta forma:

with dm.QueryRelCaixa do
begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM ESTACAI.dbf');
  SQL.Add('WHERE CAIDAT BETWEEN :DataI AND :DataF');
  SQL.Add('AND CAIHOR BETWEEN :HoraI AND :HoraF');
  SQL.Add('AND CAINCX = :Ncaixa');
  SQL.Add('AND CAIFLA = ""');

  ParamByName('DataI') .AsDateTime := StrToDateTime(txtDataIni.Text);
  ParamByName('DataF') .AsDateTime := StrToDateTime(txtDataFin.Text);
  ParamByName('HoraI') .AsString   := txtHoraIni.Text;
  ParamByName('HoraF') .AsString   := txtHoraFin.Text;
  ParamByName('Ncaixa').AsString   := txtNumCaixa.Text;

  Open;
end;

Mas além disso, preciso calcular a soma dos valores de CAIENT quando CAIDIN = 'X'

e isso é feito já em uma outra Region do Rave Reports.

Com a função SUM() do Rave não é possível, porque dessa forma ele faz a somatória de todos os registros, independente da primeira busca realizada.

Alguém pode me salvar???

Muito obrigado.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

a pesquisa esta retornando os dados corretos?

se tiver é so você fazer um wile para preencher um variavel com o valor cujo CAIDIN = 'X'.

este codigo abaixo não irá funcionar é só a logica.

EX.

var

Soma : real;

begin

Soma :=0;

QueryRelCaixa.firt;

while not QueryRelCaixa.eof do begin

if QueryRelCaixa.fieldbyname('CAIDIN').asString=X then begin

Soma :=soma + QueryRelCaixa.fieldbyname('VALOR').asFloat;

end;

QueryRelCaixa.next;

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

Coloquei uma MessageBox pra verificar o RecordCount da Query...

with dm.QueryRelCaixa do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM ESTACAI.dbf');
    SQL.Add('WHERE CAIDAT BETWEEN :DataI AND :DataF');
    SQL.Add('AND CAIHOR BETWEEN :HoraI AND :HoraF');
    SQL.Add('AND CAINCX = :Ncaixa');
    SQL.Add('AND CAIFLA = ""');

    ParamByName('DataI') .AsDateTime := StrToDateTime(txtDataIni.Text);
    ParamByName('DataF') .AsDateTime := StrToDateTime(txtDataFin.Text);
    ParamByName('HoraI') .AsString   := txtHoraIni.Text;
    ParamByName('HoraF') .AsString   := txtHoraFin.Text;
    ParamByName('Ncaixa').AsString   := txtNumCaixa.Text;


    Open;

    Application.MessageBox(PChar(dm.QueryRelCaixa.recordCount), 'RecordCount', mb_OK);

  end;

Mas a MessageBox não retorna nada... aparece vazia..

não consigo entender porque a query fica vazia depois da consulta..porque não é pra ficar... existem registros dentro do que eu pedi..

Além disso, essa mesma busca é feita para gerar o relatório...e este é gerado corretamente.

Editado por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

  • 0
agora apareceu ZERO..

ou seja, não tem nada na query após a busca realizada

mas esta mesma busca eu utilizo para gerar o relatório e funciona perfeitamente...

Estranho ... procure fazer uma comparação com as 2 e veja se voce deixou passar alguma coisa

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,3k
×
×
  • Criar Novo...