Foxtable(狐表)用户栏目专家坐堂 → [求助]如何使用代码提高效率


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

主题:[求助]如何使用代码提高效率

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


加好友 发短信
等级:童狐 帖子:250 积分:2479 威望:0 精华:0 注册:2011/6/19 0:05:00
[求助]如何使用代码提高效率  发帖心情 Post By: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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/24 15:48:00 [只看该作者]

1、你为什么要这样设计表?表A和表B的结构是否相同?如果相同,为什么要做两张表或者多张表?

 

2、如果不改变设计,必须像你那样每个表写代码。


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


加好友 发短信
等级:童狐 帖子:250 积分:2479 威望:0 精华:0 注册:2011/6/19 0:05:00
  发帖心情 Post By:2018/2/1 23:07:00 [只看该作者]

表A和表B结构是不同的。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 23:28:00 [只看该作者]

以下是引用witkeylaw在2018/2/1 23:07:00的发言:
表A和表B结构是不同的。

 

那就没办法,必须每个表写代码。

 

如果你要简化代码,可以把代码写到全局表事件 http://www.foxtable.com/webhelp/scr/0671.htm

 


 回到顶部