以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助...重新生成关联表及关联子表的方式 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189305) |
-- 作者: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天了也没能搞定 只能跟您求救... |
-- 作者:victor_lin33 -- 发布时间:2023/11/23 12:52:00 -- 另外 我关联太多 打开项目耗时 (因为有28张来源A表要 关联到文件收发记录) 能怎样优化吗? 就是不要用每张表和"文管收发台账" 关联 应该怎样做? 谢谢! |
-- 作者:有点蓝 -- 发布时间:2023/11/23 13:34:00 -- 代码执行有什么地方有问题? |
-- 作者:victor_lin33 -- 发布时间:2023/11/23 14:20:00 -- 代码没问题 就是没达到要的功能 当A表原笔资料修改发放部门 没法同步修正 关联B表及C表 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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 |