Foxtable(狐表)用户栏目专家坐堂 → 表达式触发


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

主题:表达式触发

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


加好友 发短信
等级:幼狐 帖子:122 积分:1805 威望:0 精华:0 注册:2016/8/30 12:08:00
表达式触发  发帖心情 Post By:2021/11/15 15:25:00 [只看该作者]


此主题相关图片如下:未命名.png
按此在新窗口浏览图片



思路:当发货明细表正常编辑操作时(已发货数量列的值变化),订单明细表的”已发货数量“(表达式sum)发生变化,同时订单表的”已发齐“(表达式IIF)也发生变化,同时通过RaiseDataColChanged触发订单表的DataColChanged将数据列已完成=表达式列已发齐;(后续还要增加类似已付款的表达式列来触发订单已完成的情况,且已完成需要用数据列来保存到SQL中)
问题:正常操作时没问题,但当发货明细表执行撤销操作时,似乎无法触发RaiseDataColChanged,导致订单表的DataColChanged无法触发。请教老师有没有什么解决方法?

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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/15 15:45:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:122 积分:1805 威望:0 精华:0 注册:2016/8/30 12:08:00
  发帖心情 Post By:2021/11/15 15:53:00 [只看该作者]

参考的就是这个帮助,这个帮助已经可以背下来了,现在遇到的问题是用DataTable.RejectChanges撤销表的时候,没办法做触发,有没有其他更好的选择?烦请老师帮忙看一下。

[此贴子已经被作者于2021/11/15 15:52:53编辑过]

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


加好友 发短信
等级:幼狐 帖子:122 积分:1805 威望:0 精华:0 注册:2016/8/30 12:08:00
  发帖心情 Post By:2021/11/15 15:56:00 [只看该作者]

或者有没有什么方法,可以将一个表达式列的值和一个数据列的值做关联绑定。


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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/15 16:12:00 [只看该作者]

既然都背下来了,为什么还是按照错误的用法来使用?

只能按照帮助的用法处理,没有什么所谓的绑定方法

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


加好友 发短信
等级:幼狐 帖子:122 积分:1805 威望:0 精华:0 注册:2016/8/30 12:08:00
  发帖心情 Post By:2021/11/15 16:41:00 [只看该作者]

关于通过子表来触发父表的事件,我不知道我错在哪里,请老师指点一下
我只改了帮助文件是这条:Dim pr As DataRow = e.DataRow.GetParentRow("订单") '找出对应的父行 
这里我用了  Dim pr As DataRow = DataTables("订单号").Find("订单号 = '" & e.DataRow("订单号") & "'")   也是因为多表关联,反正是要在订单表中找到对应的行,如果说这个必须要用GetParentRow的方法,这也简单,改一下就是了,我测试的时候也都试过了,效果是一致的。
但问题不是出在这里,我说了,正常编辑子表是没问题的,父表的事件是可以触发的,但当子表进行撤销操作的时候(Tables(e.Form.name & "_发货明细表").DataTable.RejectChanges),父表事件没有被触发,(我的理解是撤销的时候,连子表的DataColChanged,更不用说通过RaiseDataColChanged触发父表的DataColChanged了)。有没有什么方法可以在撤销子表的情况下,也能触发父表事件?




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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2021/11/15 16:47:00 [只看该作者]

可以自己做个撤销按钮,单击按钮,同步核销子表和父表的修改:
Tables(e.Form.name & "_发货明细表").DataTable.RejectChanges()
DataTables("父表名称").RejectChanges()

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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/15 16:51:00 [只看该作者]

把订单表的datacolchanged代码发上来,代码尽量不要截图,这样别人没有办法改

case "已发起"
改为
case “订单号”

然后明细表
DataTables("订单表").DataCols("已发起").RaiseDataColChanged(pr)
改为
然后明细表
DataTables("订单表").DataCols("订单号").RaiseDataColChanged(pr)

由于订单明细表是根据发货明细表统计的,所以订单明细表和发货明细表也要根据同样的方法做,也就是要通过2级触发,发货明细表的数量改变,通过RaiseDataColChanged触发订单明细表的datacolchanged事件,然后订单明细表的datacolchanged事件里再触发订单表的datacolchanged事件。

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


加好友 发短信
等级:幼狐 帖子:122 积分:1805 威望:0 精华:0 注册:2016/8/30 12:08:00
  发帖心情 Post By:2021/11/15 17:08:00 [只看该作者]

哇塞,惊动了狐爸,我有点激动。撤销父表的方法可能不行,父表的其他行有可能在操作的,不能因为撤销子表来对父表进行撤销。
我可能是思路上没理清楚,陷进去了,感谢狐爸和有点蓝老师,我还是再想想其他的解题思路。

 回到顶部