关于‘Arithmetic in filter expressions not supported’的错误,在线等待!!!(10分)

  • 主题发起人 主题发起人 yydreamer
  • 开始时间 开始时间
Y

yydreamer

Unregistered / Unconfirmed
GUEST, unregistred user!
我用MaskEdit做了2个显示时间的,(格式是!0000-!90-90;1;_)分别为起始时间:MaskEdit_TimeStart和结束时间:MaskEdit_TimeEnd,
并编了下面的程序(‘出入时间’是在数据库sql server中定义的列名,格式为smallDateTime):
  var TmpStr:String;
  begin
if length(TmpStr)>0 then
TmpStr:=TmpStr+'AND';
TmpStr:=TmpStr+'出入时间>'+MaskEdit_TimeStart.Text;
TmpStr:=TmpStr+'AND 出入时间<'+MaskEdit_TimeEnd.Text;
end;
  
Filter:=TmpStr;
filtered:=True;

我希望只显示出时间在MaskEdit_TimeStart和MaskEdit_TimeEnd之间的内容,但我在运行时,出现了
‘Arithmetic in filter expressions not supported’的错误,这是不是因为我定义的MaskEdit格式中有‘-’?
我试过将‘-’改成‘:’和‘_’但这样就不显示年份了。
请问这样的情况如何修改?
 
好像少空格
 
哪少呀
是空格的问题吗?
 
应该类似于 出入时间>'12/31/1999' 这样的格式,要引号!
 
在MaskEdit的EditMask中这么定义吗(>'12/31/1999')
 
哦,搞错了,我以为是dataset的filter
 
呵呵  是database中的filter
那应该如何改呢
 
1、
if length(TmpStr)>0 then
TmpStr:=TmpStr+'AND';
and后面怎么没有空格

2、TmpStr:=TmpStr+'出入时间>'''+MaskEdit_TimeStart.Text+'''';
MaskEdit_TimeStart.Text应该使用 MM/DD/YYYY 的格式

3、下面的同2
 
To Pipi
to 1、AND后的空格加了,还是一样出现那个错误提示。

to 2、MM/DD/YYYY 不是和YYYY/MM/DD一样吗?
MaskEdit_TimeStart.Text的格式改为 !0000/!90/90;1;_ (即YYYY/MM/DD) 了,也还是不行

无论 !0000/!90/90;1;_ 或!0000-!90-90;1;_,在显示时,都是正常的呀 

在按1、2条改后还是一样的错误提示。


 

TmpStr:=TmpStr+'出入时间>'+chr(39)+MaskEdit_TimeStart.Text+chr(39);
TmpStr:=TmpStr+'AND 出入时间<'+chr(39)+MaskEdit_TimeEnd.Text+chr(39);
 
to zhongtu
啊!真的行了!
为什么要加上chr(39)
回答完后就给分
 
tmpstr := TmpStr+'出入时间>'+''''+MaskEdit_TimeStart.Text+'''';试一下
Delphi字符串中如果有'需要两个''
 
谢谢,但我还是不知道为什么要加chr(39),它是什么意思?
 
chr(39)即'的ASC码.如chr(13)代表回车.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部