• ベストアンサー

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

  • VBからSQLServer2005のデータベースを最適化するには?

    WindowsXP,VB6.0.SP6にて開発しております。 タイトルの通りですが、SQLServer2005のデータベースを最適化したいのです。 色々調べましたところ、ACCESSでの最適化は見つかるのですが、 SQLサーバーでのやり方が見つかりませんでした。 どうか、ご存知の方いらっしゃいましたら、 ご教授よろしくお願いしますm(_ _)m

  • VB2005よりSQLServer2005への接続

    VB2005 Express版とSQL Server 2005製品版をインストールしました。 VB2005のデータベースエクスプローラよりデータベースの追加で 作成済みのSQLデータベースに接続しようとした所以下のエラーメッセージが出て接続出来ません。  ちなみに、メッセージの出ているリモート接続は確認しました。  リモート接続(TCP/IP及び名前付きパイプを使用する。) (エラーメッセージ) サーバーへの接続を確立している時にエラーが発生しました。SQL Server 2005に接続している時にこのエラーが発生した場合はSQL Serverの既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。(provider:SQLネットワークインターフェイス,,error:26 - 指定されたサーバー又はインスタンスの位置を特定しているときにエラーが発生しました) どなたか、解決の為のアドバイスを下さい。 当方、VBおよびSQLも今回初めて使用します。  

  • データベースの扱い方について

    使っている環境はVB6.0です。 もともとデータベースが用意されていて、リストボックスにデータベースのデータを表示させたいのですが、どこでどのようにSQLの文を使ったら良いかなど全くわかりません・・・なので誰かわかる方お願い致します。

  • グリッドにデータベースの更新を反映させるには?

    VB6.0SP5で開発しています。 単純なデータベースの更新プログラムなんですが、 更新した後にRefreshやRebindしても更新内容が反映されません。 ADODCをつかってグリッドに内容を表示しているのですが、 グリッドをクリックして選択した行のレコードを削除します。 そのあとに、ADODCをRefreshしてもグリッドをRefreshしても反映されないんです。 データは削除されています。 DataGrid,TDBGridの二つのグリッドで試したんですが、 どっちもだめでした。 みななんどうやって反映させているのでしょうか? どうぞ、よろしくお願いしますm(_ _)m

  • データベースエラー

    お気に入りに入れて、いつも見ているサイトにアクセスしたところ 下記のメッセージが出てアクセスできませんでした。 解決法を教えてください。 データベースエラーが発生しました。 指定された設定でデータベースサーバに接続できません。

  • ネット上どこからでも、SQLサーバに接続してデータを取得するには?

    WINDOWSXP,VB6,SP5で開発しています。 ネット上ならどこからでも、指定したSQLサーバからデータを取得して、 表示させるみたいなプログラムを作っています。 今まではVBWEBというのをつかっていたのですが、 会社も開発も終わっているみたいで、使い方もいまいちよくわからないので、 違う方法で接続できたらなあと思っています。 普通はどういう方法で接続するのでしょうか? どうぞ、よろしくお願いしますm(_ _)m

  • VBでADODCを使ってパスワード付ACCESSに接続する方法

    VB6.0SP5でプログラム作っています。 ADODCを使ってパスワード付のアクセスデータベースに接続したいのですが、 全然出来ません(--;) ADODCのプロパティの接続タブで、 パスワードのところに、設定したパスワードを入力しても ダメでした。 ユーザー名は、あるのかすらわからないので空欄です。 ためしにアクセスのパスワード設定を解除してみると、接続できました。 エラーは プロバイダの初期化中にエラーが発生したため、接続のテストに失敗しました。 アプリケーションを起動できません。システムデータベースが存在しないか、 またはほかのユーザーが排他的にシステムデータベースを開いています。 です。 排他的に開いていたりしないし、パスワード設定を解除すれば接続できるので、???です。 どうしてもADODCを使って接続したいのです。 接続する方法はないのでしょうか?

  • VBからOracle接続

    VB6.0からサーバのOracle8.1.7に接続し、表示させるプログラムを作って います。 VBのDataGridとAdodcを使いテーブル内容を表示させることは できたのですが、行の削除を行うとエラーになってしまいます。この対処 方法または意味が分かれば教えて下さい。 エラーになる箇所とエラーのメッセージは以下のようになっています。 SqlStr = "DELETE from emp where empno = 1" Adodc1.RecordSource = SqlStr Adodc1.Refresh    ↑   ここで、「オブジェクトが閉じてる場合は操作は許可されません」   というエラーがでます。   (DELETE文をSELECT文にするとエラーはでません)   

  • クライアントからVB2005 .netアプリでSQL Serverに接続できない

    プログラムの配布で困っています。 ■環境 【開発環境兼サーバー】 ・WindowsXP Professinal SP2 ・SQL Server 2005 Express ・Visual Basic 2005 Express ・Microsoft .net Framework 3.5 SP1 ・MDAC 2.8 【クライアントA】 ・WindowsXP Professinal SP2 ・SQL Server 2005 Express ・Visual Basic 2005 Express ・Microsoft .net Framework 3.5 SP1 ・MDAC 2.8 【クライアントB】 ・WindowsXP Home SP2 ・Microsoft .net Framework 3.5 SP1 ・MDAC 2.8 上記環境でプログラムを作成し、VBの 発行ウィザードで 配布プログラムを作成し、クライアントで実行してみました。 .netも無事インストールされ、プログラムを起動すると、 .net Frameworkから 「System.Data.SqlClient.SqlException: SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: SQL ネットワーク インターフェイス, error: 26 - 指定されたサーバーまたはインスタンスの位置を特定しているときにエラーが発生しました)」 とでて起動できません。 開発環境兼サーバーではもちろんローカルのSQL Serverに接続できます。 クライアントAから開発環境兼サーバーへも接続できます。 クライアントBから開発環境兼サーバーへは接続できません。 ちなみに、クライアントBからODBCに設定もエラーで出来ませんでした。 データベースにはADO.netで使用してます。 いろいろとネットで検索して調べてみましたが、解決には 至りませんでした。 クライアントに何か足りないものがあるのでしょうか。 長くなりましたが、どうぞよろしくおねがいします。

  • SqlDataAdapterからSqlServerに接続できない

    VB.netでSqlDataAdapterを貼り付け、データアダプター構成ウィザードを使ってSqlサーバーへの接続を作成しようとしたところ、メッセージボックスが表示されます。 データベースに接続できません。 このVersionのVisualStudioを使った場合に限り、 SQL Server DeskTop Engine データベースおよび MicrosoftAccessデータベースに接続することができます。 とメッセージが表示され先に進むことができません。 データリンクプロパティで、接続のテストをすると 成功とでますので、SQLサーバーを認識しているようですが・・・ もしかしてこれは、VB.NETからはSQLサーバーに接続できない、VisualStudio.netでないとSQLサーバーに接続できないということなのでしょうか。ASP.NETをやってみたくてVB.NETをさわってみているんですが… ご存知の方がいらっしゃいましたら、なにとぞご教授くださいませ。

専門家に質問してみよう