以文本方式查看主题

-  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,需要重复录入上述代码。

四、如何改进
如果需要增加多几个表,实现类似的功能,按照上述实现的方法太过于繁琐,请问如何设计才能减轻工作量,例如使用全局代码、内部函数等。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:选择.rar


--  作者:有点甜
--  发布时间: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