• ベストアンサー

ADODCでデータベースに接続する際のエラーを拾うには?

WindowsXP,VB6,SP6,SQL2005にて開発しています。 ADODCを使って、データベースに接続しているのですが、 何らかのエラーが発生した場合、 こちらの指定したエラーメッセージを表示させたいのです。 なので、ADODC1_Errorにて試してみたのですが、 fCancelDisplay=0にしても、ErrorNumber=0にしても、 Scode=0にしても、Description=""にしても、 メッセージボックス(表示は何もない)が表示されてしまうんです。 それを出さないようにするには、どうしたらよいのでしょうか? どうぞ、ご教授よろしくお願いしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.2

SQL Sever 2000+Access の場合ですが、基本は同じだと考えて・・・。 Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)    MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & CnnErrors.Description & Chr$(13) & _       "・Err.Number=" & CnnErrors.Number & Chr$(13) & _       "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _       "・SQL Text=" & strSQL, _       vbExclamation, " ADO関数エラーメッセージ" End Sub Public Function CnnExecute(ByVal strSQL As String) As Boolean On Error GoTo Err_CnnExecute    Dim isOK As Boolean    Dim cnn As ADODB.Connection       isOK = True    Set cnn = CurrentProject.Connection    With cnn      .Errors.Clear      .BeginTrans      .Execute strSQL      .CommitTrans    End With Exit_CnnExecute: On Error Resume Next    cnn.Close    Set cnn = Nothing    CnnExecute = isOK    Exit Function Err_CnnExecute:    isOK = False    If cnn.Errors.Count > 0 Then      ErrMessage cnn.Errors(0), strSQL      cnn.RollbackTrans    Else      MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _         vbExclamation, " 関数エラーメッセージ"    End If    Resume Exit_CnnExecute End Function *単なるデザイナですので外していたらスミマセン!

その他の回答 (1)

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

ん~言ってることがわかるような分からないような。。。 ・ADO接続でDB使っています。 ・ADO接続でエラーが発生した場合に、VBが出すエラーMSGではなく、自前の処理を行いたい。 ・エラーで使用されるオブジェクト等をクリアしても、標準のエラー処理が動いてしまう。 と言うことですか? エラートラップ掛けていますか? 関数の頭で On Error GoTo ErrHandler と呪文を唱え 関数の尾部で、 'エラー処理 ErrHandler: といった感じでラベルを宣言し、その中で自前の処理をすればよいのでは? この説明で理解できますか?

関連するQ&A