以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教一下  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=140373)

--  作者:ygg8310
--  发布时间:2019/9/4 14:43:00
--  请教一下
现有表ABCDEFG 想把它们的第一列,第二列,第三列,第四列,第五列以不重复的形式增加到表H中这个呢能够实现吗?
--  作者:有点蓝
--  发布时间:2019/9/4 15:14:00
--  
遍历这些表,逐行添加,添加前先查询表H是否有相同的数据,没有再新增行
--  作者:ygg8310
--  发布时间:2019/9/4 16:43:00
--  
Dim f1 As New Filler
f1.SourceTable = DataTables("收入")
f1.SourceCols = "第五列,第六列" \'指定数据来源列
f1.DataTable = DataTables("统计")
f1.DataCols = "第五列,第六列" \'指定数据接收列

f1.Filter = "项目 is not null"
Dim dr As DataTable = Tables("收入")
If DataTables("统计").Find("第五列 = \'" & dr.第五列 & "\' And 第六列 = \'" & dr.第六列 & "\'")Is Nothing Then
Else
f1.Fill()
Dim f2 As New Filler

f2 = New Filler
f2.SourceTable = DataTables("成本")
f2.SourceCols = "第五列,第六列" \'指定数据来源列

f2.DataTable = DataTables("统计")
f2.DataCols = "第五列,第六列" \'指定数据接收列

f2.Filter = "项目 is not null"
Dim dr2 As DataTable = Tables("成本")
If DataTables("统计").Find("第五列 = \'" & dr2.第五列 & "\' And 第六列 = \'" & dr2.第六列 & "\'")Is Nothing Then
Else
f2.Fill()
老师,编译错误。。。还是不会。。。

--  作者:有点蓝
--  发布时间:2019/9/4 16:50:00
--  
不能使用Filter 

For Each dr1 As DataRow In DataTables("表A").datarows
    Dim dr2 As DataRow = DataTables("表H").find("第五列 = \'" & dr1("第五列") & "\' And 第六列 = \'" & dr1("第六列") & "\'")
    If dr2 Is Nothing
        dr2 = DataTables("表H").AddNew()
        For Each dc As DataCol In DataTables("表A").DataCols
            dr2(dc.Name) = dr1(dc.name)
        Next
    End If
Next

--  作者:ygg8310
--  发布时间:2019/9/4 17:21:00
--  
Dim Cols1() As String = {"第五列","第六列"}
Dim Cols2() As String = {"第五列","第六列"}
For Each dr1 As DataRow In DataTables("收入").datarows
    Dim dr2 As DataRow = DataTables("统计").find("第五列 = \'" & dr1("第五列") & "\' And 第六列 = \'" & dr1("第六列") & "\'")
    If dr2 Is Nothing
        dr2 = DataTables("统计").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
      Next
    End If
Next
老师这段代码应该还可以改善一下,第一数据量大时很卡,第二没有排除空白行。。。
[此贴子已经被作者于2019/9/4 17:31:33编辑过]

--  作者:有点蓝
--  发布时间:2019/9/4 17:53:00
--  
据量大这个没有办法,如果sql熟练可以考虑直接使用SQL更新。

For Each dr1 As DataRow In DataTables("收入").select("第五列 is not null")

--  作者:ygg8310
--  发布时间:2019/9/4 19:06:00
--  
老师,还请教一下,那个空白行该如何排除?
--  作者:有点蓝
--  发布时间:2019/9/5 8:42:00
--  
看6楼