3

我试图从记录集中的列中获取行,然后将它们插入一个简单明了的表中。

记录集已填充,我使用 .MoveFirst 从 rs 的开头开始,但我仍然在一开始就得到了 EOF,它跳出了 do while..

我有一个类似的工作功能,但由于某种原因这个功能无法工作。

我不知道为什么......或者如何解决这个问题。欢迎任何见解!

当前代码~

Public Function makeSäljare()
'Create rs
Dim rsData As ADODB.Recordset
Set rsData = New ADODB.Recordset
Dim sql As String

'Select what should be included in the rs.
rsData.Open "SELECT Forhandler, Selger FROM data", _
CurrentProject.Connection, adOpenDynamic, adLockOptimistic
rsData.MoveFirst


MsgBox rsData.GetString

'Manipulate each row of the result column.
Do While Not rsData.EOF


sql = "INSERT INTO säljare (Partner_Namn, Namn ) VALUES ('" & rsData!forhandler & "','" & rsData!Selger & "');"
MsgBox sql
'DoCmd.SetWarnings (False)
DoCmd.RunSQL (sql)
'DoCmd.SetWarnings (True)


rsData.MoveNext
'If rsData.EOF Then Exit Do

Loop

rsData.Close

End Function

它在 Do While Not rsData.EOF..

4

2 回答 2

3

GetString将记录集留在EOFMoveFirst再次之前Do While Not rsData.EOF

rsData.MoveFirst
MsgBox rsData.GetString
rsData.MoveFirst ' <-- add this
'Manipulate each row of the result column.
Do While Not rsData.EOF
于 2013-09-11T14:31:49.170 回答
0

我没有尝试您的代码,但这在逻辑上意味着记录集是空的。仔细检查您在数据库上执行的查询是否正确。

在 Access 中,使用 DAO 而不是 ADO 并尝试以下操作:

Set db = CurrentDb
set rsData = db.OpenRecordset("SELECT Forhandler, Selger FROM data", dbOpenDynaset) 
于 2013-09-11T14:26:17.083 回答