gpt4 book ai didi

mysql - RecordSet 上的 GetRows 不会存储 Access DB 中的文本列

转载 作者:行者123 更新时间:2023-11-30 00:20:06 25 4
gpt4 key购买 nike

我已成功从 Excel 连接到 Access 数据库,并且可以在 RecordSet 上使用 GetString 以字符串形式返回数据库的内容。 GetString 按照我的预期将表的所有内容打印到消息框中(在下面的注释中),但 GetRows 忽略其中一列(在本例中为 GCAT),而该列恰好是数据库中唯一的文本字段。我试图将该字段的特定实例打印到我的 Excel 工作表中,但在数组位置(0,1)(GCAT 字段应该在的位置)处,它打印记录的第三项,而不是我期望的第二项。我缺少什么?它与文本字段有什么关系吗?也许我使用了错误的库或数据库引擎?数据库中的所有其他列均正常返回。

Sub Connect()
Dim oConn As ADODB.Connection
Dim oRs As ADODB.Recordset
Dim sConn As String
Dim sSQL As String
Dim arrayString As String



sConn = "Provider='Microsoft.ACE.OLEDB.12.0';Data Source='<path_to_db>'; Persist Security Info='False';"

' Open a connection.
Set oConn = New ADODB.Connection
oConn.ConnectionString = sConn
oConn.Open

' Make a query over the connection.
sSQL = "SELECT ID, GCAT, Min_Years, Max_Years, Contract_Price FROM GCAT"
Set oRs = New ADODB.Recordset
CursorLocation = adUseClient
oRs.Open sSQL, oConn, adOpenStatic, adLockBatchOptimistic, adCmdText


GCATArray = oRs.GetRows()

Sheets("Calculations").Range("D6").Value = GCATArray(0, 1)

'GCATString = oRs.GetString()
'MsgBox GCATString

' Close the connection.
oConn.Close
Set oConn = Nothing

End Sub

这是我第一次涉足 VB,所以我对所使用的语言感到困惑和挣扎。

最佳答案

在你的代码中看不到任何明显的错误,你尝试过自己调试吗?您可以循环记录集中的字段,并显示它们的名称以进行测试,如下所示:

For i = 0 To oRS.Fields.Count -1
debug.print oRS.Fields(i).Name
Next

这样,您就可以首先了解您要查找的字段是否确实存在。接下来,您可以通过执行以下操作来 Access 您想要的字段:

Do While Not oRS.EOF
Debug.Print oRS!GCAT
'Exit Do 'if you want to display only the first, break out of the loop here
oRS.MoveNext
Loop

在这种情况下,您不需要 GetRows(),这也会给您带来性能提升(在较大的记录集上非常明显)。

关于mysql - RecordSet 上的 GetRows 不会存储 Access DB 中的文本列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318066/

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