我在开发数据库系统中用到SQL日期查询,利用的DEV的cxDateEdit组件,在综合查询中如下图所示实例:
查询按钮代码:
procedure TFrmQuery.ActSearchExecute(Sender: TObject);
var
sqlstr:string;
begin
sqlstr:='SELECT * FROM T_hfzs Where 1=1 ';
if Edit4zygz.Text<>'' then sqlstr:=sqlstr + ' AND zygz like'+''''+'%'+Trim(Edit4zygz.Text)+'%'+''''; //职业
if Edit5nd.Text<>'' then sqlstr:=sqlstr + ' AND nd like'+''''+'%'+Trim(Edit5nd.Text)+'%'+''''; //年度
if ComboBox1.Text<>'' then sqlstr:=sqlstr + ' AND jdjb like'+''''+'%'+Trim(ComboBox1.Text)+'%'+''''; //等级
if Edit7bmdw.Text<>'' then sqlstr:=sqlstr + ' AND bmdw like'+''''+'%'+Trim(Edit7bmdw.Text)+'%'+''''; //申报单位
if Edit8kspc.Text<>'' then sqlstr:=sqlstr + ' AND kspc like'+''''+'%'+Trim(Edit8kspc.Text)+'%'+''''; //考试批次
if (cxDateEdit1.Date) > (cxDateEdit2.Date) then
ShowMessage('起始日期大于终止日期,查询条件不正确。');
if (cxDateEdit1.Text<>'') OR (cxDateEdit2.Text<>'') then sqlstr:=sqlstr + ' AND jddate between '''+DateToStr(cxDateEdit1.Date)+''' AND '''+DateToStr(cxDateEdit2.Date)+''''; //鉴定日期
sqlstr:=sqlstr+'order by id';
if not dm.FDConnection1.Connected then
dm.FDConnection1.Connected := True;
dm.FDQuery1.Close;
dm.FDQuery1.Sql.Clear;
dm.FDQuery1.Sql.Add(sqlstr);
dm.FDQuery1.Open;
StatusBar1.Panels[2].Text := Format('共有' + '%s' + '条数据', [IntTOStr(DBGrid1.DataSource.DataSet.RecordCount)]);
end;