从ODBC切换到OLEDB并获取“需要对象”

时间:2015-04-29 14:18:51

标签: vba vb6 odbc oledb

我的任务是修改一些VBA代码,以便从使用ODBC连接切换到使用OLEDB连接,这样我们就可以将用户名和密码编码到子例程中。

我当然没有经验,但我认为我已经设法为新的OLEDB连接获得正确的连接字符串。

我在一个独立的测试子测试中测试了连接字符串,它工作正常。

我正在尝试替换代码中的先前ODBC连接字符串,但我开始得到“运行时错误'424'对象需要”

以下是我目前正在努力开展的工作:

Sub getdata()
Dim tableName As String
Dim tableRecords As New ADODB.Recordset
Dim Cnxn2 As ADODB.Connection 

tableName = "TABLE_NAME"

Set Cnxn2 = New ADODB.Connection

'Old Connection String Using ODBC
'Cnxn2.ConnectionString = "Data Source='DATASOURCE';" '& "Integrated Security = SSPI;"

'New Connection String Using OLEDB
Cnxn2.ConnectionString = "Provider=sqloledb;Data Source=SERVER\INSTANCE;User ID=USER;Password=PASSWORD;"

Cnxn2.ConnectionTimeout = 30
Cnxn2.Open
tableRecords.Open tableName, Cnxn2, adUseClient, adLockOptimistic, adCmdTable

With tableRecords
ReturnData.Range("A1").CopyFromRecordset tableRecords(10)

.Close
End With
        Cnxn2.Close

        Set Cnxn2 = Nothing
        Set tableRecords = Nothing
    End Sub

错误是突出显示“ReturnData.Range(”A1“)的行.CopyFromRecordset tableRecords(1)

为什么我只更改连接字符串时会收到Object Required错误?

注意:在另一个位置的代码中有一个非常相似的子,我只是删除了“ReturnData”。从前面提到的线,它似乎开始工作。如果我这样做,虽然我得到这个: 运行时错误'430':类不支持自动化或不支持预期的接口

为什么切换到OLEDB的任何帮助都打破了这一点。非常感谢。

1 个答案:

答案 0 :(得分:1)

你的代码中没有创建ReturnData或任何东西,除非你声明它是全局变量else where。我想你是在Excel中这样做的。在哪种情况下替换ReturnData.Range("A1").CopyFromRecordset tableRecords(10)

这样的东西
activeworkbook.sheets("Sheet1").Range("A1").CopyFromRecordset tableRecords(10)

EDIT。管理复制它然后修复它。试试这个。

替换ReturnData.Range("A1").CopyFromRecordset tableRecords(10)

这样的东西
activeworkbook.sheets("Sheet1").Range("A1").CopyFromRecordset tableRecords