一个用Table过滤查询时不能解决的问题

陈祥xx 2003-08-29 07:04:26
我在用Table过滤查询一个时间字段时,出现了
Project project1.exe raised exception class EDstabaseError with message 'Invalid filter expression charcater:':''.Process stoped.Use Step or Run to continue.
的错误, 而如果用Query查询的话,日期字段又有问题
Project project1.exe raised exception class EDstabaseError with message 'Invalid use of keyword.
Token:TableName.db
Line Number:1'.Process stoped.Use Step or Run to continue.
这个Line Number :1 是什么错误, 我找得到Line Number:-8 -- 1899,却一直找不到Line Number:1.
...全文
57 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlyx2003 2003-08-30
  • 打赏
  • 举报
回复
up
dickeybird888 2003-08-30
  • 打赏
  • 举报
回复
用query可以对日期操作的如下:
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from 表1 where Date>=:Adate1 AND Date<=:Adate2 ');
query1.SQL.Add('and Time>=:Time1 AND Time<=:Time2');
query1.paramByName('Adate1').AsDateTime:=DTPickerStart.Date;
query1.paramByName('Adate2').AsDateTime:=DTPickerEnd.Date;
query1.paramByName('Atime1').AsDateTime:=DateTimePicker1.Time;
query1.paramByName('Atime2').AsDateTime:=DateTimePicker2.Time;
query1.Open;
陈祥xx 2003-08-30
  • 打赏
  • 举报
回复
用这个方法是行不通的,你没看见上面的提示错误吗,'Invalid filter expression charcater:':',关键是不能过滤时间字段,因为时间格式里面含有‘:’字符
陈祥xx 2003-08-30
  • 打赏
  • 举报
回复
to dickeybird888(于伟刚)
你这种方法我一开始就用了,正因为这样不行我才改用Table的, 真是奇怪的很。郁闷啊!
racesun 2003-08-29
  • 打赏
  • 举报
回复
在 OnFilterRecord 事件上写代码,例如:
procedure TForm1.DataSetFilterRecord(DataSet: TDataSet; var Accept: Boolean);

begin
Accept := DataSet['字段名'] > 筛选条件;

end;
然后在操作的时候吧Filtered关一下再开一下就好了。
racesun 2003-08-29
  • 打赏
  • 举报
回复
在 OnFilterRecord 事件上写代码,
然后在操作的时候吧Filtered关一下再开一下就好了。
陈祥xx 2003-08-29
  • 打赏
  • 举报
回复
用Query的写法:
procedure TF_Check.SBtn_DemandClick(Sender: TObject);
var StartDate,EndDate:TDate; StartTime,EndTime:TTime;
begin
StartDate:=DTPickerStart.Date;
EndDate:=DTPickerEnd.Date;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from TableName.db where DATE>=:StartDate and DATE<=:EndDate');
Query1.ParamByName('StartDate').AsString:=datetostr(StartDate);
Query1.ParamByName('EndDate').AsString:=datetostr(EndDate);
Query1.Open;
end;
请多指教!!
陈祥xx 2003-08-29
  • 打赏
  • 举报
回复
procedure TF_Check.SBtn_DemandClick(Sender: TObject);
var StartDate,EndDate:TDate; StartTime,EndTime:TTime;
begin
with Table1 do
begin
if active=true then active:=false;
filter:='';
StartDate:=DTPickerStart.Date; //DTPickerStart:TDateTimePicker
StartTime:=DateTimePicker1.Time; //DateTimePicker1:TDateTimePicker
EndDate:=DTPickerEnd.Date; //DTPickerEnd:TDateTimePicker
EndTime:=DateTimePicker2.Time; //DateTimePicker2:TDateTimePicker
filter:='DATE>='+datetostr(StartDate)+' and Date<='+datetostr(EndDate);
filter:='TIME>='+Timetostr(StartTime)+' and TIME<='+Timetostr(EndTime);
filtered:=true;
Active:=true;
end;
end;
请指教!
lemon_wei 2003-08-29
  • 打赏
  • 举报
回复
是的,把代码贴出来
yujohny 2003-08-29
  • 打赏
  • 举报
回复
你把你那段代码写出来,我想是你代码中的错误

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧