起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 165|回复: 6

【结帖】DataChange事件是如何用DataSet.Edit**

[复制链接]
发表于 2008-5-3 20:36:27 | 显示全部楼层 |阅读模式
数据集为主子表,DataNavigator只有一个控件,不是自动侦测.

问题:在只修改子表的情况下DataNavigator的"保存"按钮没有被激活.
所以想采用子表DataChange事件中检测子表的操作.

  IF (Field<>nil) and (Field.FieldName='HY') then
  IF DataSetCCJLSJJ.DataSet.State = TDataSetState.dsBrowse then
     DataSetCCJLSJJ.DataSet.Edit;

情况:运行时提示DataSetCCLJJLSJJ: Dataset not in edit or insert mode,按确定后可以正常操作,主表也进入了Edit模式.

应如何修改?
回复

使用道具 举报

发表于 2008-5-4 08:31:56 | 显示全部楼层
楼主,在DataChange设个断点,看一下有没有进入这段代码?
回复 支持 反对

使用道具 举报

发表于 2008-5-4 11:19:27 | 显示全部楼层
另外,楼主,问一下楼主,DataNavigator不是自动侦测,那也就是说指定了它的datasource,那它的datasource是主表吧?
还有你上面的代码是在从数据集的Ondatachange事件中 处理的,那么DataSetCCJLSJJ这个数据集是主数据集还是从数据集?这里是否应该是这样才可以呢?
if 从数据集.datastate = TDataSetState.dsBrowse then
  主数据集.edit;

具体请先整理一下,然后有问题咱们再继续联系。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 12:28:33 | 显示全部楼层
程序当然进入了,也执行了!
DataNavigator不是自动侦测,datasource是主表!
从数据集的Ondatachange事件中处理

if 主数据集.datastate = TDataSetState.dsBrowse then
  主数据集.edit;

思维是这样的,在从数据集中一修改字段后,检查主数据集在dsBrowse模式如不是就修改为
如在AfterEdit中执行,按第一个键时.主数据集模式是可以修改,但字段成为了全选,按第个二字时将第一个字改了!

现在已通过其它方法改好,但还是希望了解一下!
回复 支持 反对

使用道具 举报

发表于 2008-5-5 14:10:12 | 显示全部楼层
首先恭喜楼主解决了问题。

至于说的[如在AfterEdit中执行,按第一个键时.主数据集模式是可以修改,但字段成为了全选,按第个二字时将第一个字改了!]
这个问题不太好说,需要跟踪代码来确定,因为截获数据集事件多了后就可能会有类似的情况存在。
回复 支持 反对

使用道具 举报

发表于 2008-5-5 14:21:26 | 显示全部楼层
楼主,还有别的什么问题么?如果没有就揭帖了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-6 23:56:45 | 显示全部楼层
结吧!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-12 06:00 , Processed in 0.041945 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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