gpt4 book ai didi

sql-server - 将 listbox.recordset 设置为 ADODB 记录集会在使用列表框时导致崩溃

转载 作者:行者123 更新时间:2023-12-04 08:12:03 25 4
gpt4 key购买 nike

我在 ms-access(office 365,v1808)中工作,今天我的代码突然崩溃了。我无法具体查明问题所在,也无法在互联网上找到有用的信息。

我正在从外部 SQL-server 表中检索带有 ADODB.Recordset 对象的记录集。这是导致 Access 在没有任何有用信息的情况下崩溃的代码:

Private Sub Command_Click()
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim i As Long

strSQL = "SELECT TOP 100 *" & _
" FROM myTable;"

Call OpenMyRecordset(rs, strSQL)
Set Me.myListbox.Recordset = rs

Me.myListbox.Value = Me.myListbox.ItemData(0)

rs.Close
Set rs = Nothing

End Sub

通常是行 'Me.Listbox...' 导致崩溃(在尝试中断并单步执行代码之后)

我已经尝试过了,但没有成功:

i = Me.myListbox.ItemData(0)
Me.myListbox.Value = i

有时如果我只使用代码也会崩溃:

Debug.print Me.myListbox.Value

最奇怪的是错误不一致:有时它运行一两次然后崩溃,而其他时候它立即崩溃。

目前收集到的额外信息:

  • 返回的 rs 正常。 (非空)
  • 如果我只使用“Set me.myListbox.Recordset = rs”并且不查询/更改 .Value 属性,一切都很好
  • 在不加载记录集的情况下使用 .Value 属性也没有问题
  • 重新创建 SQL 表没有帮助
  • 使用不同的表/数据库没有帮助
  • 重新启动 Access/我的电脑/创建一个只有相关代码的新 Access 文件没有帮助

编辑:

记录集的字段类型为 int、int、nvarchar(255)、nvarchar(255)。

OpenMyRecordset 的代码是从http://accessexperts.net/blog/2011/01/21/easy-adodb-recordsets-and-commands-in-access/ 复制并相应调整的

最佳答案

列表框类型的表单控件从 .RowSource 获取数据,而不是 .Recordset

如果您的代码如上所述在过去有效,则可能是由于错误或疏忽所致 - 但我不希望它有效。

关于sql-server - 将 listbox.recordset 设置为 ADODB 记录集会在使用列表框时导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58955452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com