ADOのcommandオブジェクトを使ってクエリを実行したところエラーが
表示されてしまいました。エラーのコメントからcommandオブジェクト
のCommandTextに設定したクエリ名が文字化けしてしまってるという事
まではわかったのですがその原因が分かりません。
途中で処理を止めてウォッチ式で見てみましたが文字化けは起こっていません。
また、これが起こるのはcommandオブジェクトのパラメータを要求するクエリを
実行した場合であって、パラメータを要求しないクエリを実行して動作確認
したところ文字化けは起こりませんでした。
原因が分かる方、教えて下さい。
これが生じたのはNT4.0Workstationでしたが、2000やXPで実行しても正常に
処理が終了しました。ちなみにいずれもADO2.5(msado15.dllのバージョン:2.53.6200.0)を使用しています。
下の処理が実際のプログラムと、エラーダイアログに表示されるコメントです。
hogehoge.mdbファイル内のqryDATAクエリを実行するプログラムです。
*********************************************************************
'コネクションを作成する。
Set adoConnection = New ADODB.Connection
adoConnection.ConnectionString = "Provider=" & PROVIDER & ";" & _
"Data Source=" & ActiveWorkbook.Path & "\hogehoge.mdb"
adoConnection.Open
'レコードセットオブジェクトを作成する。
Set adoRecordset = New ADODB.Recordset
'コマンドオブジェクトを作成する。
Set adoCommand = New ADODB.Command
'コマンドのコネクションを設定する
Set adoCommand.ActiveConnection = adoConnection
adoCommand.Properties("Jet OLEDB:Stored Query") = True
adoCommand.CommandText = "qryDATA" '←クエリ名を設定します。
'パラメータセット
adoCommand.Parameters.(0) = "fagufagu"
'レコードセットオープン
With adoRecordset
.CursorLocation = adUseServer
.CursorType = adOpenForwardOnly
.LockType = adLockReadOnly
.Open adoCommand.execute '←ここでアベンドします。
End With
'レコードセットクローズ
adoRecordset.Close
'コマンドオブジェクトの破棄
Set adoCommand = nothing
'レコードセットオブジェクトの破棄
Set adoRecordset = nothing
'コネクションオブジェクトの破棄
Set adoConnection = nothing
**********************************************************************
エラーダイアログ:
「入力テーブルまたはクエリ'?XyDATA'が見つかりませんでした。そのテーブルや
クエリが存在していること、または名前が正しいことを確認して下さい。」
ツイート | ![]() |