修改 cxFilter 使之支持Oracle的日期型。

在DataControler 里有一份文件 cxFilter.pas,此文件定义了在 cxgrid 中进行 Filter 时的一些动作,此次正好我要用到,于是看了一下,发现其中的日期型有点问题。

在第863 行附近改成如下:

 1 None.gif function TcxFilterOperator.GetExpressionValue( const  AValue: Variant):  string ;
 2 None.gifvar
 3 None.gif  AVarType: Integer;
 4 None.gifbegin
 5 None.gif   if  not PrepareExpressionValue(AValue, Result) then
 6 None.gif  begin
 7 None.gif    AVarType : =  VarType(AValue);
 8 None.gif     if  (AVarType  =  varString) or (AVarType  =  varOleStr) then  //  <- VarTypeIsStr()
 9 None.gif       Result : =  QuotedStr(VarToStr(AValue))
10 None.gif     else
11 None.gif       if  AVarType  =  varDate then
12 None.gif      begin
13 None.gif //          DateTimeFormat:='YYYY-MM-DD';  // 临时定义日期格式
14 None.gif          Result: = '  TO_DATE( ' + QuotedStr( CriteriaItem.Criteria.ConvertDateToStr(
15 None.gif           AValue)) + ' , ' + Quotedstr( ' YYYY-MM-DD ' ) + ' ) ' ;
16 None.gif      end
17 None.gif       //  原来的日期没有加 to_date ,Oracle 不认。
18 None.gif //         Result := '''' + CriteriaItem.Criteria.ConvertDateToStr(AValue) + ''''
19 None.gif        else
20 None.gif         if  AVarType  =  varBoolean then
21 None.gif          Result : =  CriteriaItem.Criteria.ConvertBoolToStr(AValue)
22 None.gif         else
23 None.gif           if  AVarType  =  varNull then
24 None.gif            Result : =   ' NULL '
25 None.gif           else
26 None.gif            Result : =  VarToStr(AValue);
27 None.gif    CriteriaItem.Criteria.FormatFilterTextValue(CriteriaItem, AValue, Result);
28 None.gif  end;
29 None.gifend;


于是,这个世界清静了,不过,这个日期定义太死了,没有时间。而实际上在使用时我一般都不带时间的,所以总觉得不完美,应该在外面定义的时候把这个 format 定义出来,这样比较好。

还有一处,cxFilter 在处理 为空和不为空的时候出现这种 = NULL 和 <> NULL ,而Oracle是不接受这种的,要改成 Is NULL 和 Is Not Null 。

转载于:https://www.cnblogs.com/qufo/archive/2007/08/07/845591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值