Fórum Passagem de Parametro #282989

25/05/2005

0

Ola Pessoal,

Sou novato na programação Delphi e estou com algumas dificuldades.

Meu banco de Dados é o Firebird, e tenho uma tabela chamada Cheques.
Estou querendo fazer um filtro de CLIENTE, STATUS do cheque e o período entre duas datas DATADEPOSITO.
No banco ficou assim:

[color=blue:24cab97241]select Sum(chvalor) as Total_Cheques
from cheques
where CHCliCod like :cli AND
CHStatus like :status AND
CHDataDepo >= :di AND
CHDataDepo <= :df[/color:24cab97241]

e funcionou beleza do jeitinho que eu queria.

Ja no programa eu usei assim:

SQLCheque.SQLConnection := fmPrincipal.con; SQLCheque.SQL. = ´select Sum(chvalor) as Total_Cheques from cheques ´+ ´where CHCliCod like :´+QuotedStr(cli) + ´ AND ´ + ´CHStatus like :´+QuotedStr(status)+ ´ AND ´ + ´CHDataDepo >= :´+QuotedStr(di)+´ AND ´ + ´CHDataDepo <= :´+QuotedStr(df); SQLCheque.Open; SQLCheque.ExecSQL(); stTotalGeral.Caption :=Formatar_valores(StrToFloat(SQLCheque.FieldByName(´Total_Cheques´).AsString)); SQLCheque.Close;


E nao Funcionou.

PS. O campo cli e Status pode ser ¬, ou seja, todos os clientes e todos os status.

Desde já agradeço.


Digitom

Digitom

Responder

Posts

25/05/2005

Bruno Belchior

tente assim:

SQLCheque.SQLConnection := fmPrincipal.con; 
ComandoSQL := Format(´select Sum(chvalor) as Total_Cheques from cheques where CHCliCod like ¬s and CHStatus like ¬s and CHDataDepo between ¬s and ¬s´, [QuotesStr(cli), QuotedStr(status), QuotedStr(FormatDateTime(´mm/dd/yyyy´, di)), (FormatDateTime(´mm/dd/yyyy´, df))]); 
SQLCheque.SQL. = ComandoSQL;
SQLCheque.Open; 
stTotalGeral.Caption :=Formatar_valores(StrToFloat(SQLCheque.FieldByName(´Total_Cheques´).AsString)); 
SQLCheque.Close;



Responder

Gostei + 0

25/05/2005

Rjun

Tente algo mais legivel

SQLCheque.SQLConnection := fmPrincipal.con; 

SQLCheque.SQL. = ´select Sum(chvalor) as Total_Cheques from cheques  
where CHCliCod like :cli  AND CHStatus like :status  AND CHDataDepo >= :di  AND CHDataDepo <= :df´ 

SQLCheque.ParamByName(´Cli´).Value = cli;
SQLCheque.ParamByName(´Status´).Value = status;
SQLCheque.ParamByName(´di´).Value = di;
SQLCheque.ParamByName(´df´).Value = df;

SQLCheque.Open; 
SQLCheque.ExecSQL(); 
stTotalGeral.Caption :=Formatar_valores(StrToFloat(SQLCheque.FieldByName(´Total_Cheques´).AsString)); 
SQLCheque.Close;



Responder

Gostei + 0

25/05/2005

Sandra

digitom (e Rjun).

SQLCheque.Open; 
SQLCheque.ExecSQL(); 

Por que .Open [b:41e4282c8b]e[/b:41e4282c8b] .ExecSQL?

Não deveria ser [b:41e4282c8b]somente[/b:41e4282c8b] .Open, uma vez que trata-se de um ´select´?


:D


Responder

Gostei + 0

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

Aceitar