以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  又不会了-从表B往表A添加内容  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=1805)

--  作者:mr725
--  发布时间:2009/2/13 20:13:00
--  又不会了-从表B往表A添加内容
表B有窗口按钮,老师们请帮修正按钮代码:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:从表b往表a添加内容.table


表B中有详细说明! 表B的内容(包括)空行都不能删除的情况下。
按钮中的代码:

Dim km As string = Tables("表B").Current("第一列")
Dim ykm As DataRow = DataTables("表A").Find("[第一列]  = \'" & km & "\'")
    if ykm Is Nothing   Then
        If MainTable.Name = "表B"
            Dim f As New Filler
            f.SourceTable = DataTables("表B")
            f.SourceCols = "第一列,第二列,第三列,第四列,第五列,第六列,第七列"
            f.DataTable = DataTables("表A")
            f.DataCols = "第一列,第二列,第三列,第四列,第五列,第六列,第七列"
            f.Fill() \'填充数据
        End If
    End If


说明:有时代码不执行,有时又执行? 执行起来会把所有行都添加的表A。
--  作者:czy
--  发布时间:2009/2/13 20:56:00
--  
是不是想这样?

Dim km As string = Tables("表B").Current("第一列")
Dim ykm As DataRow = DataTables("表A").Find("[第一列]  = \'" & km & " \'")
if ykm Is Nothing   Then
    If MainTable.Name = "表B" And Tables("表B").Current("第一列") IsNot Nothing Then
        Dim f As New Filler
        f.SourceTable = DataTables("表B")
        f.DataTable = DataTables("表A")
        f.Filter = "[第一列] = \'" & km & "\'"
        f.Fill() \'填充数据
    End If
End If

--  作者:czy
--  发布时间:2009/2/13 20:59:00
--  
第二句代码感觉是多余的,因为只需在filler中加上ExcludeExistValue就可以了。
[此贴子已经被作者于2009-2-13 20:58:57编辑过]

--  作者:mr725
--  发布时间:2009/2/13 21:03:00
--  
czy版主: 你的代码没反应啊???请打开1楼文件试一试好吗~

要把指定列的内容添加到表A啊。
[此贴子已经被作者于2009-2-13 21:06:00编辑过]

--  作者:czy
--  发布时间:2009/2/13 21:11:00
--  
我可以呀。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.table


--  作者:mr725
--  发布时间:2009/2/13 21:25:00
--  

哦~ 是我漏掉来源列和目标列了,完全照搬你2漏的代码了,不好意思。
不过,你的代码是把当前行的内容添加到表A,如果有n行(不一定连续)表A没有的内容,如何一次全部都添加过去?


--  作者:czy
--  发布时间:2009/2/13 22:06:00
--  
以下是引用mr725在2009-2-13 21:25:00的发言:

哦~ 是我漏掉来源列和目标列了,完全照搬你2漏的代码了,不好意思。
不过,你的代码是把当前行的内容添加到表A,如果有n行(不一定连续)表A没有的内容,如何一次全部都添加过去?


Dim f As New Filler
f.SourceTable = DataTables("表B")
f.SourceCols = "第一列,第二列,第三列,第四列,第五列,第六列,第七列"
f.DataTable = DataTables("表A")
f.DataCols = "第一列,第二列,第三列,第四列,第五列,第六列,第七列"
f.ExcludeExistValue = true
f.ExcludeNullValue =true
f.Fill() \'填充数据


--  作者:mr725
--  发布时间:2009/2/13 22:45:00
--  

好强啊!~ 谢谢!
慢慢学习了。


--  作者:狐狸爸爸
--  发布时间:2009/2/13 22:45:00
--  
呵呵,下面的代码,效率会高一些:

For Each dr1 As DataRow In DataTables("表B")
    Dim Dr2 As DataRow = DataTables("表A") .AddNew()
    For Each dc As DataCol In DataTables("表B").DataCols
       dr2(dc.name) = dr1(dc.name)
    Next
Next