以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- Datarowadded事件不触发和e.cancel失效 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=134053) |
-- 作者:Grandraw -- 发布时间:2019/4/26 9:25:00 -- Datarowadded事件不触发和e.cancel失效 老师好, 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事件却可以正确触发,又试了几个表,还是有的可以有的不行。 以上两个问题我实在找不到规律。 恳请老师帮忙提示一下可能的思路。谢谢 |
-- 作者:有点蓝 -- 发布时间:2019/4/26 10:39:00 -- 是开发项目有问题,还是发布后的项目有问题? 如果是前者,把项目里额bin目录删除掉,然后重启项目测试。 另外项目有没有放到共享目录,云盘目录里使用?
|
-- 作者:Grandraw -- 发布时间:2019/4/26 11:17:00 -- 感谢及时回复,补充如下: 1. 开发的项目有问题。程序为高级开发版2019版 2. Bin删掉测试过了,问题没有解决。重启项目、重启电脑、重启服务器都试过了。问题依旧。 3. 项目在本地硬盘。 新发现的,我删除了所有的关联,结果该表的datarowadded恢复触发。表实在太多,目前还不清楚具体哪个关联导致的。
|
-- 作者:有点蓝 -- 发布时间:2019/4/26 11:35:00 -- 和这个表没有关系的关联是不会影响这个表的,查找这个表的关联即可。 不要过于依赖表关联,特别是复杂的多表父子孙的关联。 有没有做动态加载?关联表要一起加载。 项目启动后加载的表多不多,数据量大不大。网络差的话,可能加载5000行的数据就会有问题了
|
-- 作者:Grandraw -- 发布时间:2019/4/26 11:47:00 -- 谢谢回复。 1. 我的关联表很少很少。只有其中几个为了便于表达式计算才设的。表存的产品信息,的数据很少。 2。关联表是一起加载的。 3. 我目前试着将所有其他的表和所有项目代码都删掉了,只留下有问题的这个表、它的父表、表间关联。问题依旧,datarowadded不能触发。 一旦我删掉这个关联,datarowadded就开始触发。所以我基本肯定是这个关联的问题。 目前正想办法做个文件上来给你们看看,比较麻烦,sql server外部表重定向回来的时候总是说找不到关键列。
|
-- 作者:有点蓝 -- 发布时间:2019/4/26 11:58:00 -- 是不是外部数据库使用了Foxtable无法识别的列类型,或者加载了二进制列 |
-- 作者:Grandraw -- 发布时间:2019/4/26 12:16:00 -- 这个不知道啊,所有外部表都是通过foxtable建立的。有时确实遇到莫名其妙的报错,比如找不到—identify之类的。 通过在foxtble中删除表另建表的方式绕开的。
|
-- 作者:Grandraw -- 发布时间:2019/4/26 12:17:00 -- 二进制列是不是文件一类的列? 这个应该没有。都是普通的string类型和double类型 |
-- 作者:Grandraw -- 发布时间:2019/4/26 12:41:00 -- 刚给您发了个邮件,foxtable@qq.com,所有的项目文件。辛苦了。 |
-- 作者:Grandraw -- 发布时间:2019/4/26 13:52:00 -- 另外,补充一些内容,如下: 1. 如果删除关联,则事件恢复正常。 2. 如果删除表达式列(表达式列引用了关联表),则事件恢复正常。 3. 另外,我感觉出问题的似乎都是我比较早期建立的表。期间经历了几次foxtable程序版本的更新。 详见项目文件。
|