通过表访问VBA循环以添加新的

问题描述 投票:0回答:2

此表与源表和目标表的列名匹配。enter image description here我想如下将记录从源表转移到目标表。

    Dim Con_Dest As New ADODB.Connection
    Dim Con_Sour As New ADODB.Connection
    Dim Rs_Sour As New ADODB.Recordset
    Dim Rs_Dest As New ADODB.Recordset

    Dim Str_SqlSour As String
    Dim Str_SqlDest As String

    Dim Str_Sql As String

    Con_Sour.Open "dsn=xxxx;uid=xxxx;pwd=xxxxx"
    Con_Dest.Open "dsn=yyyyy;uid=yyyyy;pwd=yyyyyy"

    Str_SqlSour = "select * from Table_Sour"

    Rs_Sour.Open Str_SqlSour, Con_Sour
    Rs_Dest.Open "Table_Dest", Con_Dest, adOpenDynamic, adLockOptimistic

    Rs_Sour.MoveFirst
    Do Until Rs_Sour.EOF

        With Rs_Dest
            .AddNew

            .Fields("AAA").Value = Rs_Sour.Fields("id")
            .Fields("AAB").Value = Rs_Sour.Fields("target_id")
            .Fields("AAC").Value = Rs_Sour.Fields("group_code")
            .....

            .Update
        End With

        Rs_Sour.MoveNext
    Loop

有没有一种方法可以循环遍历上面匹配表中的记录,所以我不需要键入所有的.Fields("Col_Sour").Value = Rs_Sour.Fields("Col_Dest")

access-vba adodb recordset
2个回答
0
投票
这与Rs_MATC作为匹配表的DAO记录集一起工作。

Dim Con_Dest As New ADODB.Connection Dim Con_Sour As New ADODB.Connection Dim Rs_Sour As New ADODB.Recordset Dim Rs_Dest As New ADODB.Recordset Dim Rs_MATC As DAO.Recordset Dim Str_SqlSour As String Dim Str_SqlDest As String Con_Sour.Open "dsn=xxxx;uid=xxxx;pwd=xxxx" Con_Dest.Open "dsn=yyyy;uid=yyyy;pwd=yyyy" Str_SqlSour = "select * from Table_Source" Rs_Sour.Open Str_SqlSour, Con_Sour Rs_Dest.Open "Table_Dest", Con_Dest, adOpenDynamic, adLockOptimistic Set Rs_MATC = CurrentDb.OpenRecordset("select * from Table_Matching") Rs_Sour.MoveFirst Do Until Rs_Sour.EOF With Rs_Dest .AddNew Rs_MATC.MoveFirst Do Until Rs_MATC.EOF Rs_Dest.Fields(Rs_MATC.Fields("Col_Dest").Value).Value = Rs_Sour.Fields(Rs_MATC.Fields("Col_Sour").Value).Value Rs_MATC.MoveNext Loop .Update End With Rs_Sour.MoveNext Loop


0
投票
是,可以。一种方法是使用源字段和目标字段创建二维数组。我已修改您的代码以包含此方法。 myFields()数组保存字段名称。无论列出的字段数如何,这都会循环遍历您的字段名表中的所有字段名。
© www.soinside.com 2019 - 2024. All rights reserved.