CopyFromRecordset导致Excel崩溃
问题描述:
我创建了一个从Oracle(64位)到Microsoft Excel 2013(64位)的连接。 VBA按预期方式连接并按预期粘贴列标题,但是一旦我尝试使用CopyFromRecordSet Excel复制记录之前冻结。我不知道为什么。我没有收到任何错误消息。CopyFromRecordset导致Excel崩溃
这些是我所选择的参考库:
- Visual Basic应用程序
- 的Microsoft Excel 15.0对象库
- OLE自动化
- 的Microsoft Office 15.0对象库
- Microsoft窗体2.0对象库
- Microsoft ActiveX数据对象6.1库
- TabBtnEx 1.0类型库
- Microsoft ActiveX数据对象Recordset 2.8库
下面是代码:
Sub getdata3()
Dim UserName As String
Dim PassWord As String
Dim con As Object
Dim recSet As Recordset
Dim SQL_String As String
Dim dbConnectStr As String
Dim recordCount As Long
Dim col As Integer
'Set up variables
UserName = "unid"
PassWord = "pwd"
dbConnectStr = "DSN=DW;Uid=" & UserName & ";Pwd=" & PassWord
'Set connection parameters
Set con = New ADODB.Connection
Set recSet = New ADODB.Recordset
con.ConnectionString = dbConnectStr
con.ConnectionTimeout = 30
con.Open dbConnectStr
'Query
SQL_String = "SELECT * FROM U0408224.D_FLAG WHERE DWID = 675863"
recSet.Open SQL_String, con, adOpenStatic
'Recordset to sheet
col = 0
Do While col < recSet.Fields.Count
Sheets("SQL").Cells(20, col + 1) = recSet.Fields(col).Name
col = col + 1
Loop
Sheets("SQL").Cells(21, 1).CopyFromRecordset recSet
'Close recordsets and connections
recSet.Close
con.Close
Set con = Nothing
Set recSet = Nothing
End Sub
答
我想我想通了。我将CursorTypeEnum从adOpenStatic更改为adOpenForwardOnly,并且完美运行。我怀疑在ODBC连接中有一些不允许adOpenStatic的错误。我运行Excel 64位,但是,用于ODBC连接的dll文件在其中有32个文件。
您是否验证过记录集中实际存在数据? – Rory
是的,当我添加recSet.recordCount时,我得到2。 –