Saldo anterior - o que há de errado?

17/10/2018

0

Olá amigos. Tenho um botão no formato que, ao clicar, preciso que me retorne o saldo do mês anterior, o seja, total de entradas menos total de saídas do mês anterior.

Só que quando eu clico, da erro. Aparece a mensagem 'tipo de dados incompatível na expressão de critério.

O que pode estar errado?

Meu código tá assim:

procedure TFinanceiro.Button5Click(Sender: TObject);
Var
DataIni,  DataFim: Tdate;
num1, num2, num3: real;
begin
//Retorna o total de entradas do mês anterior
Label4.caption  := '';
DataIni := StartOfTheMonth(Datetimepicker1.Date);
DataFim := EndOfTheMonth(Datetimepicker2.Date);
AdoqueryEntr.Close;
AdoqueryEntr.SQL.Clear;
AdoqueryEntr.SQL.Add('Select sum(Valor) as Expr1');
AdoqueryEntr.SQL.Add('From entradas');
AdoqueryEntr.SQL.Add('where DtLanc between :DataIni and :DataFim');
AdoqueryEntr.Parameters.ParamByName('DataIni').Value := DataIni;
AdoqueryEntr.Parameters.ParamByName('DataFim').Value := DataFim;
AdoqueryEntr.Open;
If dbtext1.Caption = '' then
begin
num1 := StrToFloat('0');
Label4.Caption := 'R$0.00'
end
else
begin
num1 := StrToFloat(dbtext1.caption);
Label4.Caption := FloatToStrF(num1, ffcurrency, 8,2);
end;
//Retorna o total de saída do mês anterior
label5.caption := '';
AdoquerySai.close;
AdoquerySai.SQL.Clear;
AdoquerySai.SQL.add('Select sim(Valor) as Expr2');
AdoquerySai.SQL.add('from Saidas');
AdoquerySai.SQL.add('where DtLanc between :DataIni and :DataFim');
AdoquerySai.Parameters.ParamByName('DataIni').Value := DataIni;
AdoquerySai.Parameters.ParamByName('DataFim').Value := DataFim;
AdoquerySai.Open;
If dbtext2.Caption = '' then
Begin
num2 := StrToFloat(dbtext2.Caption);
Label5.Caption := 'R$0.00';
end
else
begin
num2 := StrtoFloat(dbtext2.caption);
Label5.Caption := FloatToStrF(num2, ffcurrency, 8,2);
end;
num3 := num1 - num2;
LabelSaldo.caption := FloatToStrF(num3, ffcurrency, 8,2);
End; 
.
Edilson Santiago

Edilson Santiago

Responder

Posts

17/10/2018

Emerson Nascimento

AdoquerySai.SQL.add('Select sim(Valor) as Expr2');

sIm deveria ser sUm, não?
Responder

17/10/2018

Edilson Santiago

É sum mesmo. La no Delphi tá certo. Foi na hora de passar pra ca... O erro , contudo, continua o mesmo
Responder

17/10/2018

Douglas Souza

Opa Edilson, boa tarde.

Eu acredito que problema (tipo de dados incompatível na expressão de critério) está na formatação do campo: DataIni e DataFim, os mesmos devem estar em um formato inválido. Sugiro que você execute a instrução SQL de um dos Adoquery direto no seu banco de dados, passando o valor da data no mesmo formato que o delphi.

Att, Douglas Claudio.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar