|
Lazarus‘ DBGrid Filter 在过滤Date 类型时该如何处理?似乎字段是日期类型时会报错。不知大家遇到过这个问题吗。
代码如下
procedure TForm1.MenuItem1Click(Sender: TObject);
var
strFilter,strColName,strFilterCond:string;
tField:TFieldType;
begin
strFilterCond:='';
if ODBCConnection1.Connected=False then exit;
strFilter:= DBGrid1.DataSource.Dataset.Fields[DBGrid1.SelectedField.Index].AsString;
strColName:= DBGrid1.DataSource.Dataset.Fields[DBGrid1.SelectedField.Index].FieldName;
tField:=DBGrid1.DataSource.Dataset.Fields[DBGrid1.SelectedField.Index].DataType;
case tField of
ftString:
strFilterCond:='('+ strColName +'='''+ strFilter +''')';
ftDate,ftDateTime,ftTime:
strFilterCond:='';
// strFilterCond:= '('+ strColName+'=' + strFilter + ')'; //Date字段类型该如何处理?
else
strFilterCond:= '('+ strColName+'=' + strFilter + ')';
end;
//showmessage(strFilterCond) ;
SqlQuery1.Filtered:=False;
SqlQuery1.Filter:= strFilterCond;
SqlQuery1.Filtered:= True;
end;
|
|