gpt4 book ai didi

sql - VB6 ADODB.Recordset Record.Count 不起作用/EOF 和 BOF 不可用

转载 作者:行者123 更新时间:2023-12-04 20:26:38 26 4
gpt4 key购买 nike

我有一个关于 VB6 中的 ADODB 记录集的问题,这让我困惑了几个星期。我已将记录集写入工作表以实现一些我无法直接从记录集中获得的结果。
但是随着数据集的建立,将记录集写入工作表会减慢程序的速度,我想知道是否有人可以为我解决记录集难题。

以下是我遇到的问题 -
1) xRst.Recordcount 总是返回 -1
2) 错误消息“参数类型错误、超出可接受范围或相互冲突”,在设置 (A) .cursorlocation 到 adUseClient 或 adUseServer 和 (B) .LockType 时弹出
3) 无法在记录集上 .getrows => 我相信这与 xRst.Recordcount 返回 -1 的原因相同?

以下是我的代码的一部分。上述问题可能是由提供商的限制引起的吗?

xConnstring = "Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties='Excel 12.0'; Data Source =" & Thisworkbook.fullname
xCnn.Open xConnstring
xSqlstring = " SELECT * FROM [APRI$] "
Set xRst = xCnn.Execute(xSqlstring)
Msgbox(xRst.RecordCount)
Do Until xRst.EOF
......
xRst.MoveNext
Loop

对于记录集,我也尝试了两种开放方法,但也不起作用。
Set xRst.ActiveConnection = xCnn
xRst.Source = xSqlstring
xRst.CursorType = adOpenDynamic
------Error Message Occurs On Below Two Lines------
xRst.CursorLocation = adUseServer
xRst.LockType = adLockOptimistic
xRst.Open

下面的代码会遇到错误,但是去掉最后两个参数的时候会通过
xRst.Open xSqlstring, xCnn, adOpenKeyset, adUseServer, adLockoptimistic

有人可以请告诉我如何获得 1)recordset.recordcount,2)recordset.movenext 工作吗?

提前致谢。

最佳答案

默认光标类型是 adOpenForwardOnly。对于 adOpenForwardOnly 或 adOpenUnspecified,记录计数始终返回为 -1。使用 adOpenKeySet 或 adOpenStatic。即:(我假设工作表名称 APRI 是正确的,而不是 APRIL - 并且有一个名为 Dummy 的工作表来列出测试结果):

Dim xCnn As ADODB.Connection
Dim xRst As ADODB.Recordset
Dim xConnString As String

xConnString = "Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties='Excel 12.0'; Data Source =" & ThisWorkbook.FullName
Set xCnn = New ADODB.Connection
xCnn.Open xConnString
xSqlstring = " SELECT * FROM [APRI$] "
Set xRst = New ADODB.Recordset
xRst.Open xSqlstring, xCnn, adOpenStatic
MsgBox (xRst.RecordCount)
Dim row As Integer
row = 1
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Dummy")
Do Until xRst.EOF
'...
ws.Cells(row, 1).Value = xRst.Fields(0).Value
row = row + 1
xRst.MoveNext
Loop

关于sql - VB6 ADODB.Recordset Record.Count 不起作用/EOF 和 BOF 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58954217/

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