2

クライアントの1つで実行されている古い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スクリプトであり、何年も前のものです。SW全体が古いXPコンピューターからWindows7に転送され、どこにでも問題があるようです。

ここで何が問題なのかを判断するのを手伝ってくれる人がいますか。少なくとも、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が機能するには、コンピュータにインストールされているものが不足している必要があります...

接続は正常に機能しているようです。初期化時にエラーは発生しません。エラーは、呼び出しrs.Open(sSql、cn)で発生します。エラーが発生したときの詳細なエラーメッセージだけが必要です...ありがとうございます。

4

2 に答える 2

7

MSナレッジベースに記載されているとおり

メソッドの実行中、またはオブジェクト変数のプロパティの取得または設定中にエラーが発生しました。エラーは、オブジェクトを作成したアプリケーションによって報告されました。Errオブジェクトのプロパティを確認して、エラーの原因と性質を判別してください。また、accessingステートメントの直前にOn Error Resume Nextステートメントを使用してみて、accessingステートメントの直後にエラーがないか確認してください。

したがって、彼らが提案しているように、次のように、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を使用できます。

于 2013-01-22T09:48:23.680 に答える
3

エラーの説明を取得するには、次のように実行できます。

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
于 2013-01-22T15:20:58.137 に答える