Foxtable(狐表)用户栏目专家坐堂 → Datarowadded事件不触发和e.cancel失效


  共有1937人关注过本帖树形打印复制链接

主题:Datarowadded事件不触发和e.cancel失效

帅哥哟,离线,有人找我吗?
Grandraw
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
Datarowadded事件不触发和e.cancel失效  发帖心情 Post By:2019/4/26 9:25:00 [只看该作者]

老师好,

Foxtable高级开发版,另本人不是新手。

遇到两个奇怪的事件,有时候触发有时候不触发。程序太大且链接sql数据库,无法全部上传。

1. 窗口的beforeclose事件,偶尔e.cancel=true无法拦截关闭动作。
代码如下:

'*****************************************************
'判断是否存在修改,询问是否取消所有未保存的修改
If e.closemode=1 Then Return '如果是通过代码关闭窗口的话,如cancel
Dim kr As Row=Tables("Customers").current

If kr Is Nothing Then  Return

Dim r As DataRow = kr.DataRow

Dim Havechanges As Boolean=False
  
If r.Rowstate<> DataRowState.unchanged Then HaveChanges=True
 

If Havechanges=False  Then Return '直接退出窗口
e.cancel=True
messagebox.show("You have made changes. You must Save or Cancel the changes first.", "Closing", MessageBoxButtons.ok, messageboxicon.warning)
'*****************************************************
我十次中有三四次会看到messagebox的警告,但是窗口还是被关闭;大多数时候窗口关闭动作还是会被拦截。
这种偶发性的问题令人摸不着头脑。

2. 表的datarowadded事件,今天居然遇到不能触发的情况。

简单一句事件代码测试,
messsagebox.show("已触发“)

清楚看到行已经添加,但没有messagebox。令人崩溃的是,我切换到同项目的另一个表,datarowadded事件却可以正确触发,又试了几个表,还是有的可以有的不行。





以上两个问题我实在找不到规律。
恳请老师帮忙提示一下可能的思路。谢谢










 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/26 10:39:00 [只看该作者]

是开发项目有问题,还是发布后的项目有问题?

如果是前者,把项目里额bin目录删除掉,然后重启项目测试。

另外项目有没有放到共享目录,云盘目录里使用?

 回到顶部
帅哥哟,离线,有人找我吗?
Grandraw
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2019/4/26 11:17:00 [只看该作者]

感谢及时回复,补充如下:

1. 开发的项目有问题。程序为高级开发版2019版

2. Bin删掉测试过了,问题没有解决。重启项目、重启电脑、重启服务器都试过了。问题依旧。

3. 项目在本地硬盘。

新发现的,我删除了所有的关联,结果该表的datarowadded恢复触发。表实在太多,目前还不清楚具体哪个关联导致的。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/26 11:35:00 [只看该作者]

和这个表没有关系的关联是不会影响这个表的,查找这个表的关联即可。

不要过于依赖表关联,特别是复杂的多表父子孙的关联。

有没有做动态加载?关联表要一起加载。

项目启动后加载的表多不多,数据量大不大。网络差的话,可能加载5000行的数据就会有问题了

 回到顶部
帅哥哟,离线,有人找我吗?
Grandraw
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2019/4/26 11:47:00 [只看该作者]

谢谢回复。

1. 我的关联表很少很少。只有其中几个为了便于表达式计算才设的。表存的产品信息,的数据很少。

2。关联表是一起加载的。

3. 我目前试着将所有其他的表和所有项目代码都删掉了,只留下有问题的这个表、它的父表、表间关联。问题依旧,datarowadded不能触发。
    一旦我删掉这个关联,datarowadded就开始触发。所以我基本肯定是这个关联的问题。

目前正想办法做个文件上来给你们看看,比较麻烦,sql server外部表重定向回来的时候总是说找不到关键列。

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/26 11:58:00 [只看该作者]

是不是外部数据库使用了Foxtable无法识别的列类型,或者加载了二进制列

 回到顶部
帅哥哟,离线,有人找我吗?
Grandraw
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2019/4/26 12:16:00 [只看该作者]

这个不知道啊,所有外部表都是通过foxtable建立的。有时确实遇到莫名其妙的报错,比如找不到—identify之类的。
通过在foxtble中删除表另建表的方式绕开的。

 回到顶部
帅哥哟,离线,有人找我吗?
Grandraw
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2019/4/26 12:17:00 [只看该作者]

二进制列是不是文件一类的列? 这个应该没有。都是普通的string类型和double类型

 回到顶部
帅哥哟,离线,有人找我吗?
Grandraw
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2019/4/26 12:41:00 [只看该作者]

刚给您发了个邮件,foxtable@qq.com,所有的项目文件。辛苦了。



 回到顶部
帅哥哟,离线,有人找我吗?
Grandraw
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2019/4/26 13:52:00 [只看该作者]

另外,补充一些内容,如下:

1. 如果删除关联,则事件恢复正常。

2. 如果删除表达式列(表达式列引用了关联表),则事件恢复正常。

3. 另外,我感觉出问题的似乎都是我比较早期建立的表。期间经历了几次foxtable程序版本的更新。

详见项目文件。

 回到顶部
总数 12 1 2 下一页