【发布时间】:2017-12-10 02:15:07
【问题描述】:
我正在开发一个 Excel VBA 程序,我想连接到远程 Oracle 11g 数据库、运行查询并将数据返回到 Excel。
据我所知,连接字符串和驱动程序都可以。 (见下文)
昨天它工作了一段时间,连接到数据库并返回正确的数据。然后我保存并关闭了工作簿,20 分钟后打开它(没有进行任何更改!),当我运行宏时出现以下错误:
运行时错误“-2147418113 (8000ffff)”:灾难性故障
任何想法可能导致错误? 可能是数据库方面的东西吗?
谢谢
Sub ExtractFromOracle(environment As String)
Dim cn As ADODB.connection
Dim recordSet As ADODB.recordSet
Set cn = CreateObject("ADODB.Connection")
Set recordSet = CreateObject("ADODB.recordset")
Dim SQLQuery As String
SQLQuery = "SELECT User_Id, Prof_Id FROM user_profile ORDER BY User_Id ASC"
Dim returnData As Variant
Dim returnedRowsCount As Integer
Dim connectionString As String
connectionString = ReturnConnectionString(environment)
cn.Open (connectionString) ------------> ERROR OCCURS HERE
Set recordSet = cn.Execute(SQLQuery)
returnData = Application.Transpose(recordSet.GetRows)
returnedRowsCount = UBound(returnData)
If Not SheetExist(environment) Then
CreateTab (environment)
End If
Worksheets(environment).Activate
ActiveSheet.Range("A1:B" & returnedRowsCount) = returnData
Set rs = Nothing
Set cn = Nothing
ConsolidateUsers (environment)
End Sub
连接字符串:
"Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxxx)(PORT=xxxx)))(CONNECT_DATA=(SID=xxxxx)(SERVER=DEDICATED)));User Id=xxxxxx;Password=xxxxxxx;"
【问题讨论】:
-
如果删除这些行会发生什么