Error 440 in Visual Basic Application

删除回忆录丶 提交于 2020-01-04 17:01:55

问题


There is an old VB application running at one of my clients. An exception is throws in this peice of code:

cn=GetIndexDatabaseConnectionString()
sSql="SELECT * FROM Arh_Naroc WHERE StNarocila = '" & isci & "'"                            
rs=CreateObject("ADODB.Recordset")
Call rs.Open(sSql,cn)

The exception happens in rs.Open() function. "Error number 440 occured."

This are SBL scripts for KOFAX engine and it's many years old. The whole SW was transferred from old XP computer to Windows 7 and looks like there are problems everywhere.

Can some one help me determine what is the problem here. At least if I could get a proper error message back in msgbox would be most helpful.

EDIT: This is the connection string function.

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

This is the relevant line from Settings.xml:

<ConnectionString> Provider=OraOLEDB.Oracle;Data Source=LINO2;User Id=****;Password=****;OLEDB.NET=True; </ConnectionString>

The real data is masked with *. The connection to Oracle appears to be ok. I created ODBC and linked server to sql using the provider and connection data. It works. It must be something missing installed on the computer for ADODB to work...

The connection appears to be working OK. There is no error when its initialized. The error happens in Call rs.Open(sSql, cn). All i want is the detailed error message when the error happens... Many thanks.


回答1:


As it states on MS Knowledge Base

An error occurred while executing a method or getting or setting a property of an object variable. The error was reported by the application that created the object. Check the properties of the Err object to determine the source and nature of the error. Also try using the On Error Resume Next statement immediately before the accessing statement, and then check for errors immediately following the accessing statement.

So as they suggest check the Err object, in a similar fashion to:

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

So this will bring back the error in a MsgBox, however you can just use Response.Write if you want it easier to copy & paste etc..




回答2:


to get the error description you can do as follows :

Function GetIndexDatabaseConnectionString()
  On Error GoTo Errorfound
  'your
  'function
  'body
Exit Function
Errorfound:
  With Err
    MsgBox "Source: " & .Source & vbCrLf & "Desc: " & .Description, vbCritical, "Error " & CStr(.Number)
  End With 'Err
End Function


来源:https://stackoverflow.com/questions/14455531/error-440-in-visual-basic-application

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!