起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 179|回复: 7

【结】查找字段的逻辑问题[问题]**

[复制链接]
发表于 2008-3-25 15:43:28 | 显示全部楼层 |阅读模式
我做了一个表格文档
有id 、姓名、生日 三个字段
我想实现的功能:输入 id 可以查找并自动填充 姓名、生日。
输入 姓名 可以查找并自动填充 id、生日。
以此类推,输入生日也一样。
出现的问题:用查找属性做无法实现。输入id 时,其他两个字段填充的值也满足了查找条件,结果是系统报错。
如果用代码实现在OnFieldchange写代码,也会陷入死循环,例如:输入id,将查找结果赋值给其他字段,这时候其他字段也触发了onfieldchange事件,然后不断的赋值,不断的触发相同的事件,最后死循环,窗体自动关闭。
如果这个功能一定要用表格文档实现,有可以实现的思路吗?
回复

使用道具 举报

发表于 2008-3-25 15:55:51 | 显示全部楼层
增加一个全局变量,布尔型的,比如blRun
在OnFieldchange事件中
begin
  if blRun then Exit;
  blRun :=True;
  ........//你的处理过程;
blRun :=False;
end;

不知道这样行不行,我是起步初学者。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-25 16:58:15 | 显示全部楼层
回楼上,加boolean型判断跟直接判断字段名称的原理是一样的。
之前我已经用过布尔类型判断,不可行。
回复 支持 反对

使用道具 举报

发表于 2008-3-25 17:02:49 | 显示全部楼层
不是,这个变量只是作为一个标记,表明当前的数据改变事件是否被嵌套。如果被嵌套则不再执行,这样就能避免死循环。
回复 支持 反对

使用道具 举报

发表于 2008-3-25 17:04:01 | 显示全部楼层
在OnFieldChange事件中

DataSet.OnFieldChange := nil;
//填充需要的字段
DataSet.OnFieldChange := DataSetFieldChange;
回复 支持 反对

使用道具 举报

发表于 2008-3-25 17:05:30 | 显示全部楼层
5楼其实跟2楼差不多,就是保证在事件中修改字段的值不要再次触发这个事件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-25 21:35:29 | 显示全部楼层
:cheers: 哦~!原来是判断事件的。顿悟~
我试试啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-26 08:38:55 | 显示全部楼层
ok了!感谢sjz10和alang,可以结贴了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 00:34 , Processed in 0.039711 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表