Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
victor_lin33 发表于: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天了也没能搞定 只能跟您求救...
2楼
victor_lin33 发表于:2023/11/23 12:52:00
另外 我关联太多 打开项目耗时 (因为有28张来源A表要 关联到文件收发记录)
能怎样优化吗? 就是不要用每张表和"文管收发台账" 关联 应该怎样做?

谢谢!

3楼
有点蓝 发表于:2023/11/23 13:34:00
代码执行有什么地方有问题?
4楼
victor_lin33 发表于:2023/11/23 14:20:00
代码没问题
就是没达到要的功能
当A表原笔资料修改发放部门  没法同步修正 关联B表及C表
5楼
有点蓝 发表于: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
6楼
victor_lin33 发表于: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
共6 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02930 s, 2 queries.