【问题标题】:Error 440 in Visual Basic ApplicationVisual Basic 应用程序中的错误 440
【发布时间】:2013-01-05 12:06:56
【问题描述】:

我的一个客户正在运行一个旧的 VB 应用程序。 在这段代码中抛出了一个异常:

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

异常发生在rs.Open() 函数中。 “出现错误号 440。”

这是用于 KOFAX 引擎的 SBL 脚本,它已有多年历史。 整个软件从旧的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

这是来自 Settings.xml 的相关行:

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

真实数据用*屏蔽。与 Oracle 的连接似乎没问题。我使用提供程序和连接数据创建了 ODBC 并将服务器链接到 sql。有用。它必须是在计算机上缺少安装的东西才能使 ADODB 工作......

连接似乎工作正常。初始化时没有错误。 错误发生在 Call rs.Open(sSql, cn) 中。我想要的只是发生错误时的详细错误消息... 非常感谢。

【问题讨论】:

    标签: vba vb6 ado


    【解决方案1】:

    正如它在 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
    

    因此,这将在 MsgBox 中恢复错误,但是如果您希望更轻松地复制和粘贴等,您可以使用 Response.Write。

    【讨论】:

    • 调用 rs.Open() 时代码中断。我在下一行尝试了 msgbox,但它永远不会到达那里。我真的不了解 VB,因此非常感谢基于我的代码的示例!
    • 如果代码在 rs.Open() 上中断,请检查您的连接字符串是否正确。
    • 我编辑了我的问题,以防您有任何其他建议我将如何解决我的问题
    • 检查Remou所说的,也做一个msgbox,其值为:isci显示,确保它也有一个值。
    • 您使用的是 64 位 Win7 吗?还有哪个 Kofax Capture 版本?
    【解决方案2】:

    要获取错误描述,您可以执行以下操作:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多