Data InterBase

Firebird

13/10/2003

Pessoal estou usando interbase 6(dialeto 3) pela 1ª vez e estou quebrando a cabeça para fazer uma consulta por datas (DataIni e DataFim). O campo data é do tipo date. Uso a paleta interbase

2 Maskedits : DataIni e DataFim

procedure TFConsCli.Vlr1Change(Sender: TObject);
var

pselect, pfrom, pwhere, stringsql: string;
begin

DM.Qaux1.active := false;
DM.Qaux1.SQL.Clear;

pselect:=´ SELECT * ´;
pfrom :=´FROM tbCLIENTES ´;
pwhere :=´WHERE ´;

if DataIni.Text <> ´´ then begin
if DataFim.Text = ´´ then
Exit;

if Combo.Items[Combo.ItemIndex] = ´´ then
pwhere:= pwhere+´ (DATA BETWEEN ´+DataIni.text+´ and ´+DataFim.text+´)´
end;

stringsql:= pselect+pfrom+pwhere;

DM.Qaux1.SQL.Text:=stringsql;
DM.Qaux1.Open;
DM.Qaux1.Active:=true;
end;


Já tentei fazer a consulta pelo ibconsole so que não consigo.


Angela

Angela

Curtidas 0

Respostas

Afarias

Afarias

13/10/2003

1º ) a data deve ser passada para o IB em um formato reconhecido pelo IB (ex:: ´mm/dd/yyyy´ ou ´dd.mm.yyyy´)

2º) a data deve ser passada entre aspas-simples (como qualquer valor texto)


o SQL ficaria na forma::

select * from minha_tabela where campo_data between ´10/01/2003´ and ´10/31/2003´


vc pode usar (no Delphi) a função QuotedStr para colocar a data entre aspas-simples e a função FormatDateTime para formatar a data no formato desejado, ex::

DataIni, DataFin: TDateTime;

DataIni := StrToDate(MaskEdit1.Text);
DataFin := StrToDate(MaskEdit2.Text);

pWHERE := ´WHERE CAMPO_DATA BETWEEN ´ + QuotedStr(FormatDateTime(´mm/dd/yyyy´, DataIni)) + ´ AND ´ + QuotedStr(FormatDateTime(´mm/dd/yyyy´, DataFin));



T+


GOSTEI 0
POSTAR