以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]如何使用代码提高效率 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113874) |
||||
-- 作者:witkeylaw -- 发布时间:2018/1/24 14:47:00 -- [求助]如何使用代码提高效率 一、实现的功能 主表 选择(字符)
单号 表A 选择(逻辑)
单号 表B 选择(逻辑)
单号 功能:表A或表B字段“选择”勾选,则主表的“选择”字段显示为“选择”。去掉勾选,则主表对应单号的“选择”字段清空。 二、目前实现的方法 表A、表B的表事件datacolchanged,代码 Dim dr As DataRow If e.DataCol.Name = "选择" Then If e.NewValue = True Then \'而且变动后的值是 True(已勾选) dr=DataTables("主表").Find("单号=\'"&e.DataRow("单号")&"\'") If dr IsNot Nothing Then dr("选择") = "选择" Else Return End If Else dr=DataTables("主表").Find("单号=\'"&e.DataRow("单号")&"\'") If dr IsNot Nothing Then dr("选择") = Nothing Else Return End If End If End If 三、缺点 就是在表A、表B的表事件datacolchanged,需要重复录入上述代码。 四、如何改进 如果需要增加多几个表,实现类似的功能,按照上述实现的方法太过于繁琐,请问如何设计才能减轻工作量,例如使用全局代码、内部函数等。
|
||||
-- 作者:有点甜 -- 发布时间:2018/1/24 15:48:00 -- 1、你为什么要这样设计表?表A和表B的结构是否相同?如果相同,为什么要做两张表或者多张表?
2、如果不改变设计,必须像你那样每个表写代码。 |
||||
-- 作者:witkeylaw -- 发布时间:2018/2/1 23:07:00 -- 表A和表B结构是不同的。 |
||||
-- 作者:有点甜 -- 发布时间:2018/2/1 23:28:00 -- 以下是引用witkeylaw在2018/2/1 23:07:00的发言:
表A和表B结构是不同的。
那就没办法,必须每个表写代码。
如果你要简化代码,可以把代码写到全局表事件 http://www.foxtable.com/webhelp/scr/0671.htm
|