我用Adoquery连接TClientdataset ,TClientdataset进行模糊查询,比如 cds.filter:='title = ''%黑色%'''; 会出现"type mismatch in expression"的错误,发现TField是twidestringfield都会出现这种错误,不管中文还是数字,如果我自己添加域,
with TStringfield.Create(self) do
begin
fieldName:='title';
size:=200;
Dataset:=cds_item;
end;
再追加数据
cds_item.CreateDataSet;
cds_item.AppendRecord(['123456','测试一']);
这样模糊查询就不会有问题;
主要问题应该是在TWidestringfield类型上,若能把它变成TStringfield,应该就没问题,但是我的数据是从adoquery上获取的,access数据库,adoquery连接clientdataset后自动就是twidestringfield类型,无法变更;如果像上面那样自己添加域,又没办法连接到adoquery上的数据,请问有什么解决办法能让这个Twidestringfield变成tstringfield吗,折腾了一天,实在没法子,请高人帮忙,有什么解决办法吗!clientdataset
with TStringfield.Create(self) do
begin
fieldName:='title';
size:=200;
Dataset:=cds_item;
end;
再追加数据
cds_item.CreateDataSet;
cds_item.AppendRecord(['123456','测试一']);
这样模糊查询就不会有问题;
主要问题应该是在TWidestringfield类型上,若能把它变成TStringfield,应该就没问题,但是我的数据是从adoquery上获取的,access数据库,adoquery连接clientdataset后自动就是twidestringfield类型,无法变更;如果像上面那样自己添加域,又没办法连接到adoquery上的数据,请问有什么解决办法能让这个Twidestringfield变成tstringfield吗,折腾了一天,实在没法子,请高人帮忙,有什么解决办法吗!clientdataset
“编程环境:D7、用ADO连接DB,ClientDataSet作内存表!
BUG:直接从ADOQuery字段中拷贝到ClientDataSet,loopup汉字字段显示不完整!改回TStringField字段就OK了!”
这最后一句不明白(改回TStringField字段就OK了),网上搜了半天也没找到方法,请问这个改回该如何改回!
Windows, Messages, SysUtils, Variants, midaslib; // 加上一个就行,以后就不用带着dll到处跑了就是程序会大个1~200k的样子