【发布时间】:2021-11-25 12:48:05
【问题描述】:
我尝试使用命令按钮更新列表框,单击带有 ADODB 记录集的 MS Access 表单到 Sqlite 数据库文件。
记录集 RecordCount 属性正确返回 100 条记录,但列表框仅在代码运行时显示记录集中的第一行/记录。
这个列表框出了什么问题,我错过了什么??!感谢您的帮助。
代码如下:
Private Sub cdRefresh_Click()
Dim Cnn As Object, Rst As Object
Dim cnString As String, SqlStr As String
cnString = "DRIVER=SQLite3 ODBC Driver;Database=E:\Sample Data\Sales1.db"
Set Cnn = VBA.CreateObject("ADODB.Connection")
SqlStr = "Select * From Sales Limit 100;"
Cnn.Open cnString
Set Rst = VBA.CreateObject("ADODB.Recordset")
With Rst
Set .ActiveConnection = Cnn
.Source = SqlStr
.LockType = 3 '' adLockOptimistic
.CursorType = 1 '' adOpenKeyset
.Open
End With
Debug.Print "records #"; Rst.RecordCount '' despite RecordCount>1 , the listbox only shows one record
With Me.List0
.RowSourceType = "Table/Query"
.ColumnCount = Rst.Fields.Count
.ColumnHeads = True
Set .Recordset = Rst
End With
Set Rst = Nothing
Set Cnn = Nothing
End Sub
【问题讨论】:
-
我无法重现这个。
-
我不认为设置一个列表框。 recordset 将带您到任何地方。我认为你需要设置它的行源。记录集此时只会显示一条记录,即第一条记录。
-
快速尝试
rst.MoveLast和rst.MoveFirst以确保加载整个记录集并且指针位于第一条记录。 @Minty这不是真的,设置列表框的记录集是一件有效的事情,并且在使用外部数据库时通常是可取的(使您免于进行大量的直通查询) -
我会纠正的,我以前从未见过这样使用过的属性。像往常一样 - 每天都学点东西。
标签: ms-access listbox adodb ms-access-2016 recordset