Passagem de Parametro
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:
E nao Funcionou.
PS. O campo cli e Status pode ser ¬, ou seja, todos os clientes e todos os status.
Desde já agradeço.
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
Curtidas 0
Respostas
Bruno Belchior
25/05/2005
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;
GOSTEI 0
Rjun
25/05/2005
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;
GOSTEI 0
Sandra
25/05/2005
digitom (e Rjun).
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
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
GOSTEI 0