老师,上个例子测试看看,还在同步增加行而且比原来还多增加不必要的一行了
想实现的是:如果表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
Case "项目编号"
Dim dr As DataRow
If e.OldValue <> Nothing Then
dr = DataTables("表B").Find("项目编号 = '" & e.OldValue & "'")
Else
dr = DataTables("表B").Find("项目编号 = '" & e.NewValue & "'")
End If
If dr Is Nothing Then
dr = DataTables("表B").AddNew()
dr("项目编号") = e.DataRow("项目编号")
dr("项目名称") = e.DataRow("项目名称")
dr("执行人") = e.DataRow("执行人")
Else
dr("项目编号") = e.DataRow("项目编号")
End If
Case "执行人"
Dim dr As DataRow
If e.OldValue <> Nothing Then
dr = DataTables("表B").Find("执行人 = '" & e.OldValue & "'")
Else
dr = DataTables("表B").Find("执行人 = '" & e.NewValue & "'")
End If
If dr Is Nothing Then
dr = DataTables("表B").AddNew()
dr("项目编号") = e.DataRow("项目编号")
dr("项目名称") = e.DataRow("项目名称")
dr("执行人") = e.DataRow("执行人")
Else
dr("执行人") = e.DataRow("执行人")
End If
Case "项目名称","执行人"
Dim dr As DataRow = DataTables("表B").Find("项目编号 = '" & e.DataRow("项目编号") & "'and 执行人 = '" & e.DataRow("执行人") & "'")
If dr IsNot Nothing Then
dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
End If
End Select
[此贴子已经被作者于2017/9/8 12:58:47编辑过]