以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 非关联表的一个特殊问题 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=106408) |
||||
-- 作者:douglas738888 -- 发布时间:2017/9/8 10:29:00 -- 非关联表的一个特殊问题 请教老师,下面代码是非关联表之间的数据同步,想实现,
如果FIND 绩效总评价表中已有的 项目编号 和 执行人 相同的情况下,绩效总评价表不再重复增加行和数据,否则可以增加新行和数据
Select Case e.DataCol.name [此贴子已经被作者于2017/9/8 10:30:14编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/8 10:43:00 -- Select Case e.DataCol.name
|
||||
-- 作者:douglas738888 -- 发布时间:2017/9/8 11:27:00 -- 老师,上个例子测试看看,还在同步增加行而且比原来还多增加不必要的一行了
想实现的是:如果表B行中 相同的项目编号和执行人这一行已存在,不再从表A提取数据,在表B中增加这两列相同内容的行,其他新的项目编号和执行人可在表B中增加
例如 表A 项目编号 项目名称 执行人 001 AAA A 001 AAA A 001 AAA B 001 AAA B 002 BBB A
表B 001 AAA A (此时,表B不再从复增加同内容的行) 001 AAA B (此时,表B不再从复增加同内容的行) 002 BBB A
如下代码,基本功能实现了,但如果表B没有任何行的时候,第一次增加行会增加一个有编号的空行,怎样处理 Select Case e.DataCol.name [此贴子已经被作者于2017/9/8 12:58:47编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/9/8 13:29:00 -- Select Case e.DataCol.name Case "项目编号" If e.DataRow.IsNull("项目编号") = False AndAlso e.DataRow.IsNull("执行人") = False Then Dim dr As DataRow If e.OldValue = Nothing Then dr = DataTables("绩效总评价").Find("[项目编号] = \'" & e.NewValue & "\' and 执行人 = \'" & e.DataRow("执行人") & "\'") Else dr = DataTables("绩效总评价").Find("[项目编号] = \'" & e.oldvalue & "\' and 执行人 = \'" & e.DataRow("执行人") & "\'") End If If dr Is Nothing Then dr = DataTables("绩效总评价").AddNew() dr("项目编号") = e.DataRow("项目编号") dr("项目名称") = e.DataRow("项目名称") dr("电压等级") = e.DataRow("电压等级") dr("任务阶段") = e.DataRow("任务阶段") dr("任务部室") = e.DataRow("任务部室") dr("相关专业") = e.DataRow("相关专业") dr("执行人") = e.DataRow("执行人") dr("岗位层级") = e.DataRow("岗位层级") Else dr("项目编号") = e.DataRow("项目编号") End If End If Case "执行人" If e.DataRow.IsNull("项目编号") = False AndAlso e.DataRow.IsNull("执行人") = False Then Dim dr As DataRow If e.OldValue = Nothing Then dr = DataTables("绩效总评价").Find("[项目编号] = \'" & e.DataRow("项目编号") & "\' and 执行人 = \'" & e.newvalue & "\'") Else dr = DataTables("绩效总评价").Find("[项目编号] = \'" & e.DataRow("项目编号") & "\' and 执行人 = \'" & e.oldvalue & "\'") End If If dr Is Nothing Then dr = DataTables("绩效总评价").AddNew() dr("项目编号") = e.DataRow("项目编号") dr("项目名称") = e.DataRow("项目名称") dr("电压等级") = e.DataRow("电压等级") dr("任务阶段") = e.DataRow("任务阶段") dr("任务部室") = e.DataRow("任务部室") dr("相关专业") = e.DataRow("相关专业") dr("执行人") = e.DataRow("执行人") dr("岗位层级") = e.DataRow("岗位层级") Else dr("执行人") = e.DataRow("执行人") End If End If Case "项目名称","执行人","电压等级","任务阶段","任务部室","相关专业","岗位层级" Dim dr As DataRow = DataTables("绩效总评价").Find("项目编号 = \'" & e.DataRow("项目编号") & "\' and 执行人 = \'" & e.DataRow("执行人") & "\'") If dr IsNot Nothing Then dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name) End If End Select |