在我的一个客户端运行一个旧的VB应用程序.这个代码中有一个例外:
cn=GetIndexDatabaseConnectionString()
sSql="SELECT * FROM Arh_Naroc WHERE StNarocila = '" & isci & "'"
rs=CreateObject("ADODB.Recordset")
Call rs.Open(sSql,cn)
Run Code Online (Sandbox Code Playgroud)
异常发生在rs.Open()函数中."错误号码440发生了."
这是KOFAX引擎的SBL脚本,它已有很多年了.整个SW从旧的XP计算机转移到Windows 7,看起来到处都有问题.
有人可以帮我确定这里的问题.至少如果我能在msgbox中收到正确的错误消息将是最有帮助的.
编辑:这是连接字符串函数.
Function GetIndexDatabaseConnectionString
Dim objXmlDocument As Object
Dim objXmlGlobalSettingsFileParh As Object
Dim objXmlIndexDatabaseConnectionString As Object
Dim strGlobalSettingsFilePath As String
Dim strTemp As String
Const strSettingsFilePath = "C:\Data\LocalDocsDistibutingSystem\Settings.xml"
Set objXmlDocument = CreateObject("MSXML2.DOMDocument")
objXmlDocument.Load strSettingsFilePath
Set objXmlGlobalSettingsFileParh = objXmlDocument.selectSingleNode("DocsDistributingSystem/GlobalSettingsFilePath")
strGlobalSettingsFilePath = objXmlGlobalSettingsFileParh.childNodes(0).Text
Set objXmlGlobalSettingsFileParh = Nothing
Set objXmlDocument = Nothing
Set objXmlDocument = CreateObject("MSXML2.DOMDocument")
objXmlDocument.Load strGlobalSettingsFilePath
Set objXmlIndexDatabaseConnectionString = objXmlDocument.selectSingleNode("DocsDistibutingSystem/AscentCapture/IndexDatabase/ConnectionString")
strTemp = objXmlIndexDatabaseConnectionString.childNodes(0).Text
Set objXmlIndexDatabaseConnectionString = Nothing
Set objXmlDocument = Nothing
GetIndexDatabaseConnectionString = strTemp
End Function
Run Code Online (Sandbox Code Playgroud)
这是来自Settings.xml的相关行:
<ConnectionString> Provider=OraOLEDB.Oracle;Data Source=LINO2;User Id=****;Password=****;OLEDB.NET=True; </ConnectionString>
Run Code Online (Sandbox Code Playgroud)
真实数据用*掩盖.与Oracle的连接似乎没问题.我使用提供程序和连接数据创建了ODBC和链接服务器到sql.有用.必须在计算机上安装缺少的东西才能使ADODB正常工作......
连接似乎正常.初始化时没有错误.调用rs.Open(sSql,cn)时发生错误.我想要的只是发生错误时的详细错误消息...非常感谢.
正如它在MS知识库中所述
执行方法或获取或设置对象变量的属性时发生错误.创建该对象的应用程序报告了该错误.检查Err对象的属性以确定错误的来源和性质.另请尝试在访问语句之前使用On Error Resume Next语句,然后在访问语句之后立即检查错误.
因此,他们建议以类似的方式检查Err对象:
If Err.Number <> 0 Then
Msg = "Error: " & Str(Err.Number) & ", generated by " _
& Err.Source & ControlChars.CrLf & Err.Description
MsgBox(Msg, MsgBoxStyle.Information, "Error")
End If
Run Code Online (Sandbox Code Playgroud)
因此,这将带回MsgBox中的错误,但是如果您希望它更容易复制和粘贴等,您可以使用Response.Write.