Access 2010 VBA ADODB Recordset returns 只有一条记录
Access 2010 VBA ADODB Recordset returns only one record
几个小时以来,我一直在尝试,但没有找到解决方案...这是代码:
Private Sub Form_Load()
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Cn.Provider = "SQLOLEDB.1"
Cn.CursorLocation = adUseClient
Cn.ConnectionString = "Password=*************;" & _
"Persist Security Info=True;" & _
"User ID=sa;" & _
"Initial Catalog=pA-StdVK-KalkDB_V1;" & _
"Data Source=WINSER27"
Cn.Open
Rs.Open "SELECT * FROM [dbo].[VIEW_Superliste_000]", Cn
' Me ist im Formular Name und Rs das Column im SQL Server
Me.TeileGruppe.Value = Rs.Fields("Teilegruppe")
Me.PlanTGrpSpanne_Stfl1.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl1")
Me.PlanTGrpSpanne_Stfl2.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl2")
Me.PlanTGrpSpanne_Stfl3.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl3")
...
Me.Suchbegriff.Value = Rs.Fields("Suchbegriff")
Me.Selektion.Value = Rs.Fields("Selektion")
Me.Katalogartikel.Value = Rs.Fields("Katalogartikel")
Me.Sparte.Value = Rs.Fields("Sparte")
Dim i As Long
i = 0
Do Until Rs.EOF
i = i + 1
Rs.MoveNext
Loop
Rs.Close
ExitSub:
Set Rs = Nothing
Exit Sub
ErrorHandler:
Resume ExitSub
End Sub
...我在 Whosebug 上缩短了这里的代码,它并没有那么长!!!
为什么我只有一条记录???
尝试将代码更改为如下内容:
Rs.MoveFirst
Do Until Rs.EOF
Me.TeileGruppe.Value = Rs.Fields("Teilegruppe")
Me.PlanTGrpSpanne_Stfl1.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl1")
Me.PlanTGrpSpanne_Stfl2.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl2")
Me.PlanTGrpSpanne_Stfl3.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl3")
...
Me.Suchbegriff.Value = Rs.Fields("Suchbegriff")
Me.Selektion.Value = Rs.Fields("Selektion")
Me.Katalogartikel.Value = Rs.Fields("Katalogartikel")
Me.Sparte.Value = Rs.Fields("Sparte")
Rs.MoveNext
Loop
在您的代码中,您将第一个记录集加载到表单中,然后循环遍历所有记录集,使用此代码,您循环遍历记录并将每个记录集加载到表单中。
但是每次文本框的值都会被替换,所以你很可能只会看到最后一条记录。
几个小时以来,我一直在尝试,但没有找到解决方案...这是代码:
Private Sub Form_Load()
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Cn.Provider = "SQLOLEDB.1"
Cn.CursorLocation = adUseClient
Cn.ConnectionString = "Password=*************;" & _
"Persist Security Info=True;" & _
"User ID=sa;" & _
"Initial Catalog=pA-StdVK-KalkDB_V1;" & _
"Data Source=WINSER27"
Cn.Open
Rs.Open "SELECT * FROM [dbo].[VIEW_Superliste_000]", Cn
' Me ist im Formular Name und Rs das Column im SQL Server
Me.TeileGruppe.Value = Rs.Fields("Teilegruppe")
Me.PlanTGrpSpanne_Stfl1.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl1")
Me.PlanTGrpSpanne_Stfl2.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl2")
Me.PlanTGrpSpanne_Stfl3.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl3")
...
Me.Suchbegriff.Value = Rs.Fields("Suchbegriff")
Me.Selektion.Value = Rs.Fields("Selektion")
Me.Katalogartikel.Value = Rs.Fields("Katalogartikel")
Me.Sparte.Value = Rs.Fields("Sparte")
Dim i As Long
i = 0
Do Until Rs.EOF
i = i + 1
Rs.MoveNext
Loop
Rs.Close
ExitSub:
Set Rs = Nothing
Exit Sub
ErrorHandler:
Resume ExitSub
End Sub
...我在 Whosebug 上缩短了这里的代码,它并没有那么长!!!
为什么我只有一条记录???
尝试将代码更改为如下内容:
Rs.MoveFirst
Do Until Rs.EOF
Me.TeileGruppe.Value = Rs.Fields("Teilegruppe")
Me.PlanTGrpSpanne_Stfl1.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl1")
Me.PlanTGrpSpanne_Stfl2.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl2")
Me.PlanTGrpSpanne_Stfl3.Value = Rs.Fields("Plan-TGrp-Spanne_Stfl3")
...
Me.Suchbegriff.Value = Rs.Fields("Suchbegriff")
Me.Selektion.Value = Rs.Fields("Selektion")
Me.Katalogartikel.Value = Rs.Fields("Katalogartikel")
Me.Sparte.Value = Rs.Fields("Sparte")
Rs.MoveNext
Loop
在您的代码中,您将第一个记录集加载到表单中,然后循环遍历所有记录集,使用此代码,您循环遍历记录并将每个记录集加载到表单中。 但是每次文本框的值都会被替换,所以你很可能只会看到最后一条记录。