!!急急: 三层,midas,db:oralce, 客户端clientdataset在进行filter汉字时,总是报错EDBClient with messag

  • 主题发起人 主题发起人 huhaifei
  • 开始时间 开始时间
H

huhaifei

Unregistered / Unconfirmed
GUEST, unregistred user!
!!急急: 三层,midas,db:oralce, 客户端clientdataset在进行filter汉字时,总是报错EDBClient with message"type mismatch in expression"(100分)<br />我想对一些数据进行filter, 字段类型为widestring,在输入汉字时过滤,结果出错。这是什么原因?
或者有没有别的替代方法可已实现?
 
该过程代码如下:
procedure TSysLookupFM.BtnFilterClick(Sender: TObject);
begin
EdtFilter.SetFocus;
with FField.LookupDataSetdo
begin
Filtered := False;
Filter := '';
if Trim(EdtFilter.Text) <> '' then
begin
Filter := '(';
Filter := Filter + Fields[1].FieldName + ' like ' + QuotedStr(Trim(EdtFilter.Text) + '%');
Filter := Filter + ' or ' + Fields[1].FieldName + ' like ' + QuotedStr('%' + Trim(EdtFilter.Text) + '%');
Filter := Filter + ' or ' + Fields[1].FieldName + ' like ' + QuotedStr('%' + Trim(EdtFilter.Text));
Filter := Filter + ')';
if FieldCount > 4 then
begin
Filter := Filter + ' and ' + Fields[4].FieldName + ' = 0 ';
end;
end else
begin
if FieldCount > 4 then
begin
Filter := Fields[4].FieldName + ' = 0 ';
end;
end;
Filtered := True;
BtnYes.Enabled := not IsEmpty;
end;
end;
 
Filter := '(';
Filter := Filter + Fields[1].FieldName + ' like ' + QuotedStr(Trim(EdtFilter.Text) + '%');
Filter := Filter + ' or ' + Fields[1].FieldName + ' like ' + QuotedStr('%' + Trim(EdtFilter.Text) + '%');
Filter := Filter + ' or ' + Fields[1].FieldName + ' like ' + QuotedStr('%' + Trim(EdtFilter.Text));
Filter := Filter + ')';

不知道你这串是在干什么??
最终好象还是在实现下面这句的功能:
Filter := Filter + Fields[1].FieldName + ' like ' + QuotedStr('%'+Trim(EdtFilter.Text) + '%');
类型不匹配???
把你最后生成的filter贴出来看看,或者你自己检查一下就应该知道了。
 
hongxing_dl:
你说得对就是要实现你这样的功能,最后filter得到的串就是select 的一个查找匹配某一个输入汉字的串,like 'XX%';语句是没有问题的,但不知道为什么最后就是会出错,有人说这是delphi的midas的一个bug
 
huhaifei说得对,这是个Bug.最好自己在filter事件中自己写代码,实现这个功能!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
390
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
I
回复
0
查看
594
import
I
后退
顶部