文書番号: 401672
最終更新日: 1998/02/10
SQLOpen #N/A(2042) 接続に失敗
SQLExecQuery #N/A(2042) クエリーを実行できない
#VALUE(2015) 接続 ID が有効でない
SQLRrtrieve #N/A(2042) 結果を検索できない、待機中の結果がない
0 データが見つからない
#VALUE(2015) 接続 ID が有効でない
SQLClose #VALUE(2015) 接続 ID が有効でない
このリターン値をそれぞれ検査することによって失敗した時の判定をすることができます。
SQL Server
プログラム実行環境
サーバー SQLServer
ODBC ドライバ SQLServerODBC ドライバ (Excel5.0 添付)
データソース名 TstSQL
TstSQL の内容
サーバー名 serversql1
ユーザー ID sa
データベース pubs
パスワード Excel
XLODBC アドイン関数を使用したサンプル モジュールは次の通りです。
'以下の 2 行は改行せずにコードを入力してください。
'上の 2 行は改行せずにコードを入力してください。
Dim site As String
Sub GetErrorSQL()
Dim con As Variant
Dim execresult, retriresult, closeresult As Variant
'データソースとの接続
'以下の 2 行は改行せずにコードを入力してください。
con = SQLOpen("DSN=TstSQL;SERVER=serversql1;UID=sa;DATABASE=pubs;
PWD=Excel", , 1)
'上の 2 行は改行せずにコードを入力してください。
If IsError(con) Then site = "接続": ErrorCheck (con): Exit Sub
'クエリーの実行
execresult = SQLExecQuery(con, "SELECT * FROM 書店")
If IsError(execresult) Then _
site = "クエリー実行": ErrorCheck (execresult): Exit Sub
'結果の取得と貼り付け
retriresult = SQLRetrieve(con, Range("Sheet2!A1"), , , True)
If IsError(retriresult) Then _
site = "クエリー結果取得": ErrorCheck (retriresult): Exit Sub
'データソースとの接続を切断
closeresult = SQLClose(con)
If IsError(closeresult) Then _
site = "切断": ErrorCheck (closeresult): Exit Sub
End Sub
'エラーチェック
Sub ErrorCheck(CheckValue As Variant)
Dim errmsg As Variant
MsgBox "エラー処理開始"
errmsg = SQLError()
'SQLError で 3 つのフィールドのエラーが返った時の処理
If UBound(errmsg, 1) = 3 Then
MsgBox "発生した場所: " & site & Chr(10) _
& errmsg(1) & Chr(10) & errmsg(2) & Chr(10) & errmsg(3)
'それ以外の個別のエラー判定処理
Else
Select Case site
Case "接続"
If CInt(CheckValue) = 2042 Then
MsgBox CStr(CheckValue) & Chr(10) & "発生した場所 :" _
& site & Chr(10) _
& "データソースとの接続が取り消されました"
End If
'Exit Sub
Case "クエリー実行"
If CInt(CheckValue) = 2042 Then
MsgBox CStr(CheckValue) & Chr(10) & "発生した場所 :" _
& site & Chr(10) & "クエリーを実行できません"
ElseIf CInt(CheckValue) = 2015 Then
MsgBox CStr(CheckValue) & Chr(10) & "発生した場所 :" _
& site & Chr(10) _
& "データソースとの接続 ID が有効ではありません"
End If
Case "クエリー結果取得"
If CInt(CheckValue) = 2042 Then
MsgBox CStr(CheckValue) & Chr(10) & "発生した場所 :" _
& site & Chr(10) _
& "データソース上で結果を検索できないか" _
& Chr(10) & "待機中の結果がありません"
ElseIf CInt(CheckValue) = 0 Then
MsgBox CStr(CheckValue) & Chr(10) & "発生した場所 :" _
& site & Chr(10) & "データが見つかりません"
ElseIf CInt(CheckValue) = 2015 Then
MsgBox CStr(CheckValue) & Chr(10) & "発生した場所 :" _
& site & Chr(10) _
& "データソースとの接続 ID が有効ではありません"
End If
Case "切断"
If CInt(CheckValue) = 2015 Then
MsgBox CStr(CheckValue) & Chr(10) & "発生した場所: " _
& site & Chr(10) _
& "データソースとの接続が有効ではありません"
End If
End Select
End If
End Sub
SQLServer
「 Microsoft Query 」の [?]-[目次] コマンド - [リファレンス ODBC
ドライバ] - [SQL Server] - [上級ユーザー向け 接続文字列 (上級)]
その他
ODBC ドライバ メーカーにお問い合わせ下さい
Keywords: KBINFO KB401672
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch