访问2007 vba recordset.EOF循环返回set的第一个记录

时间:2013-09-17 12:43:05

标签: sql ms-access-2007 access-vba eof recordset

所以我试图从表中选择一些数据然后遍历结果并将带有修改/附加数据的新记录插入表中。我遇到的问题是,当我遍历我的记录集时,它似乎经历了整个集合,然后在退出之前返回到第一个集合。

一个例子是我在表中有两条记录,当我进行选择时,它应该只插入两条记录,但由于某种原因它会插入3条,第一条重复两次

这是我的代码。

Dim rs1 As DAO.Recordset
Dim query1 As String
query1 = "select [Test Script] from TEST_SCRIPTS where TEST_ID= " & Me.TEST_ID & " "

Set rs1 = CurrentDb.OpenRecordset(query1)

If Not (rs1.EOF And rs1.BOF) Then

    rs1.MoveFirst
    Do Until rs1.EOF = True

         INSERT_INTO_TEST_SCRIPTS = "insert into TEST_SCRIPTS ([Test Script], TEST_ID) values (""" & rs1![Test Script] & """, " & Me.TEST_ID & ") "

            DoCmd.SetWarnings False
                DoCmd.RunSQL INSERT_INTO_TEST_SCRIPTS
            DoCmd.SetWarnings True

        rs1.MoveNext

    Loop
End If

rs1.Close
Set rs1 = Nothing

我是初次使用唱片机的人,这个一直困扰着我,我感谢任何帮助。

感谢

1 个答案:

答案 0 :(得分:1)

我认为你的代码也应该有效,就像它一样。

尝试将记录集设置为仅转发,这可能会有所帮助

  

设置rs1 = CurrentDb.OpenRecordset(query1,dbOpenForwardOnly)

除此之外,进行插入选择会更有效。

  

插入YourTable(col1,col2)(从otherTable选择col1,col2)