一个很令人沮丧的问题:ADOQuery的Filter不支持计算字段,各位大侠有什么解决办法?

wanggongqin 2003-09-29 12:39:05
我在ADOQuery中添加了一个计算字段,字段名为:货物简码,
然后在 计算事件里加入如下代码:
ADOQuery1.FieldByName('货物简码').AsString:=
GetHeadPyOfHz(ADOQuery1.FieldByName('货物名称').AsString);
// GetHeadPyOfHz 的功能是得到指定汉字的拼音首字母。
然后我再在其他地方设置过滤条件,如下:
ADOQuery1.Filter:='货物简码 like ''%'+Edit1.Text+'%''';
ADOQuery1.Filtered:=True;
结果却发生错误:项目在所需的名称或序数的集合中未被发现!

我在查看资料时看到 TDataSet 有一个保护属性:InternalCalcFields 而且是只读的。
它表示内部计算的字段是否包含在数据集中。
我想,既然有这么个属性,那么是不是我添加的计算字段没有包含在数据集中,
从而才发生这样的错误呢?
那么问题又来了,如何才能访问到这个既是保护又是只读的属性呢?

总之我的目的是用我创建的计算字段进行过滤操作,只要解决这个问题就万事OK!
当然这个问题不能用SQL的方法来解决,因为这样的话,ADOQuery1要频繁的打开关闭,
速度很慢,就不能在Edit1的OnChange事件中适时的过滤。
...全文
166 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanggongqin 2003-10-04
  • 打赏
  • 举报
回复
谢谢大家!我已经用dickeybird888(于伟刚)老兄的办法解决了问题!
47522341 2003-09-29
  • 打赏
  • 举报
回复
自己写过虑语句就玩了吗,^_^
wanggongqin 2003-09-29
  • 打赏
  • 举报
回复
我就是为了避免这种情况才提出这个问题的!!!
angle097113 2003-09-29
  • 打赏
  • 举报
回复
既然计算的字段不允许过滤
那你为什么不把这计算的字段作为一个字段家到数据库当中呢
利用一个函数来更新这个列的值 是吧!就是相当于置拼音吗
wanggongqin 2003-09-29
  • 打赏
  • 举报
回复
Filter 怎么会不支持 like !!? 我经常用啊!!!

大家好像对我的意思有所误解!
在我的数据库里,货物名称自段是一些汉字,如:“三极管”、“接触器”等,
我是想通过计算自段,计算出货物名称的简码,如:“三极管”简码:SJG;“接触器”简码:JCQ
然后,在Edit1里 输入简码,如输入“JCQ”,就过滤出货物名称是“接触器”的记录,这样就给用户极大的方便,只需要输入货物名称的拼音首字母,就可以检索出这个货物。非常方便。

现在的问题是:我在Filter里引用我创建的计算自段时出错!
我总不能在Filter里这样写吧:Filter:=GetHeadPyOfHz(货物名称)like ...
dickeybird888 2003-09-29
  • 打赏
  • 举报
回复
filter不支持like,你如果想实现like这样的filter可以如下处理:
1.ADOQuery1.onFilterRecord中加入以下代码:
begin
with ADOQuery1 do
begin
if Pos(GetHeadPyOfHz(Edit1.Text) ,fieldByName('货物名称').asString)>0 then
accept:=true
end;
end;
2.ADOQuery1.filtered:=true;//设置使打开。
ADOQuery1.close;
ADOQuery1.open;
这样写就可以了



things 2003-09-29
  • 打赏
  • 举报
回复
FILTER 不支持 LIKE,动态添加SQL语句吧

sql.add('货物名称 like '''+GetHeadPyOfHz(Edit1.Text)+'%''');
wangl 2003-09-29
  • 打赏
  • 举报
回复
帮你up
things 2003-09-29
  • 打赏
  • 举报
回复
FILTER 不支持 LIKE
大聪 2003-09-29
  • 打赏
  • 举报
回复
ADOQuery1.Filter:='货物名称 like '+GetHeadPyOfHz(Edit1.Text)+'%'

2,495

社区成员

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

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