Foxtable(狐表)用户栏目专家坐堂 → 求助...重新生成关联表及关联子表的方式


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

主题:求助...重新生成关联表及关联子表的方式

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


加好友 发短信
等级:幼狐 帖子:159 积分:1442 威望:0 精华:0 注册:2016/3/24 19:00:00
求助...重新生成关联表及关联子表的方式  发帖心情 Post By:2023/11/23 12:46:00 [只看该作者]

蓝老师:
我有一BPM流程管理项目...每张表都有"本单编号"  "来源单号"
要让A表新增时按其发放部门自动生成B C的对应资料这一步我搞定了....

当A表原笔资料修改发放部门  要同步修正原关联B表及C表我搞不定  跟您求救下...

A表为父表 关联 "文管收发台账"
>  (A表  "本单编号")→(文管收发台账  "来源单号")

"文管收发台账" 关联 "文件收发子档"
> (文管收发台账  "本单编号")→(文件收发子档  "来源单号")


我现在的代码如下:
A表代码 (DataColChanged 事件)
Case "会办抄送" '此列为多值列-勾选发放部门
        If dr.IsNull("会办抄送") = False Then '如果已经勾选
            If dr.GetChildRows("文管收发台账").Count = 0 Then '而且无对应文管发放单
                Dim cr As DataRow = DataTables("文管收发台账").AddNew() '生成关联文管发放
                cr("来源单号") = dr("本单编号")
                cr("文件名称") = dr("使用单据")
                cr("抄送对象") = dr("会办抄送")
                cr("标的项目") = dr("项目名称")
                cr("风险评估") = dr("风险评估")
                cr("内容摘要") = dr("申作内容")
                cr("编制部门") = dr("项目负责人")
                cr("BOM说明") = dr("BOM说明")
            End If
        End If


文管收发台账 代码(DataColChanged 事件)
Case "抄送对象"
        If e.DataRow.GetChildRows("文件收发子档").Count = 0 Then
            For Each s As String In e.DataRow("抄送对象").split("、")
                Dim r As Row = Tables("文管收发台账.文件收发子档").addnew
                r("抄送部门") = s
                r("来源单号") = ar("本单编号")
            Next
        End if
 

实在很小白   看了帮助档与论坛 学习3天了也没能搞定 只能跟您求救...

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


加好友 发短信
等级:幼狐 帖子:159 积分:1442 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By:2023/11/23 12:52:00 [只看该作者]

另外 我关联太多 打开项目耗时 (因为有28张来源A表要 关联到文件收发记录)
能怎样优化吗? 就是不要用每张表和"文管收发台账" 关联 应该怎样做?

谢谢!


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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/23 13:34:00 [只看该作者]

代码执行有什么地方有问题?

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


加好友 发短信
等级:幼狐 帖子:159 积分:1442 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By:2023/11/23 14:20:00 [只看该作者]

代码没问题
就是没达到要的功能
当A表原笔资料修改发放部门  没法同步修正 关联B表及C表

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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/23 14:36:00 [只看该作者]

调试

A表代码 (DataColChanged 事件)
Case "会办抄送" '此列为多值列-勾选发放部门
msgbox(dr("会办抄送"))
        If dr.IsNull("会办抄送") = False Then '如果已经勾选
msgbox("Count =" & dr.GetChildRows("文管收发台账").Count )
            If dr.GetChildRows("文管收发台账").Count = 0 Then '而且无对应文管发放单
                Dim cr As DataRow = DataTables("文管收发台账").AddNew() '生成关联文管发放
                cr("来源单号") = dr("本单编号")
                cr("文件名称") = dr("使用单据")
                cr("抄送对象") = dr("会办抄送")
msgbox("抄送对象=" & cr("抄送对象") )
                cr("标的项目") = dr("项目名称")
                cr("风险评估") = dr("风险评估")
                cr("内容摘要") = dr("申作内容")
                cr("编制部门") = dr("项目负责人")
                cr("BOM说明") = dr("BOM说明")
            End If
        End If


文管收发台账 代码(DataColChanged 事件)
Case "抄送对象"
msgbox("文件收发子档Count =" & e.DataRow.GetChildRows("文件收发子档").Count  )
        If e.DataRow.GetChildRows("文件收发子档").Count = 0 Then
            For Each s As String In e.DataRow("抄送对象").split("、")
msgbox("s=" & s )
                Dim r As Row = Tables("文管收发台账.文件收发子档").addnew
                r("抄送部门") = s
                r("来源单号") = ar("本单编号")
            Next
        End if

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


加好友 发短信
等级:幼狐 帖子:159 积分:1442 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By:2023/11/24 19:47:00 [只看该作者]

蓝老师: 搞定了的最后代码...分享给看帖的人

A表

Case "会办抄送" '此列为多值列-勾选发放部门
        msgbox(ar("会办抄送"))
        If ar.IsNull("会办抄送") = False Then '如果已经勾选
            If ar.GetChildRows("文管收发台账").Count = 0 Then '而且无对应文管发放单
                Dim cr As DataRow = DataTables("文管收发台账").AddNew() '生成关联文管发放单
                cr("来源单号") = ar("本单编号")
                cr("文件名称") = ar("使用单据")
                cr("抄送对象") = ar("会办抄送")
                cr("标的项目") = ar("项目名称")
                cr("风险评估") = ar("风险评估")
                cr("内容摘要") = ar("策划目的")
                cr("编制部门") = ar("项目负责人")
                cr("BOM说明") = ar("BOM说明")
            Else '如果已有文管发放单 但修改发放部门
                msgbox(ar("会办抄送"))
                Dim cr As DataRow = DataTables("文管收发台账").Find("来源单号='" & ar("本单编号") & "'")'查找对应文管发放单
                cr("抄送对象") = ar("会办抄送")'修改发放部门
            End If
        End If


B表代码 
Case "抄送对象"
        'msgbox("文件收发子档Count =" & e.DataRow.GetChildRows("文件收发子档").Count)
        DataTables("文件收发子档").DeleteFor("来源单号='" & ar("本单编号") & "'")
        If e.DataRow.GetChildRows("文件收发子档").Count = 0 Then
            For Each s As String In e.DataRow("抄送对象").split("、")
                'msgbox("s=" & s)
                Dim r As Row = Tables("文管收发台账.文件收发子档").addnew
                r("抄送部门") = s
                r("来源单号") = ar("本单编号")
            Next
        End If

 回到顶部