
毎度お世話になっております。
WindowsXP、Access2003、SQLServer2000を使用しております。
ADOでSQLServerからデータを抽出したいのですが、
パラメータを使用したいと考えております。
SELECT CODE FROM テーブル1
WHERE CODE = ?
とし
adoCmd.CommandTimeout = 0
With adoCmd
.CommandText = strSQL
.CommandType = adCmdUnknown
.Prepared = False
.Parameters.Refresh
End With
adoCmd.Parameters(0).Value = InputBox(Trim(strBuf))
Set adoSet = adoCmd.Execute
とすることで動作しました。
しかしSQL文を下記に変更したところエラーになりました。
SELECT t1.CODE FROM
(SELECT CODE FROM テーブル1 WHERE CODE = ? ) as t1
LEFT JOIN
(SELECT CODE FROM テーブル2 WHERE CODE = ? ) as t2
ON t1.CODE = t2.CODE
のようにすると、
.Parameters.Refresh
の部分で
実行時エラー -21474672595(80004005)
構文エラーまたはアクセス違反です。
となってしまいました。
2つの?の内、片方を定数に、片方を?にしてもエラーになりました。
?を両方とも定数にすれば実行できました。
JOIN句がある場合に?を使ってはいけないのでしょうか。
何がエラーの原因かわからない状態です。
ご教授お願いいたします。
No.2ベストアンサー
- 回答日時:
これかもしれません。
>http://support.microsoft.com/kb/829402/ja
PRB: SQLOLEDB でのパラメータ化クエリを実行すると、アクセス違反が発生します。
少し古いですが、仕様です。と書かれているので、今もそうなのかもしれません。
要はサブクエリ内にパラメータを切るとRefreshできないようです。
従って、代替策としてはRefreshでパラメータを自動生成させず、明示的に切ることになると思います。
(データ型と長さは必要に応じて変更)
With adoCmd
.CommandText = strSQL
.CommandType = adCmdUnknown
.Parameters.Append .CreateParameter("p1", adChar, adParamInput, 8)
.Parameters.Append .CreateParameter("p2", adChar, adParamInput, 8)
.Prepared = False
End With
なお、?が2つあるならパラメータは2つ必要です。
参考になることを祈ります。
回答ありがとうございます。
CreateParameterを使うことで実行できました。
勉強になります。
ありがとうございました。
No.1
- 回答日時:
>リテラル値のプレースホルダとして疑問符 "?" を指定することにより、
>無名パラメータを含むクエリを作成できます。
>必要に応じて、クエリ内で任意の数の無名パラメータを指定できます。
>複数のパラメータを使用する場合は、名前付きのパラメータを使用してパラメータを区別できます。
>詳細については、「名前付きパラメータを含むクエリを作成する」を参照してください。
(SQL Server Books Online)
この件かもです。
回答ありがとうございます。
「名前付きパラメータを含むクエリを作成する」
http://msdn.microsoft.com/ja-jp/library/aa275842 …
を見て、
「パラメータ マーカー文字を指定する」
http://msdn.microsoft.com/ja-jp/library/aa276127 …
を見ました。
しかし、正直私にはよく理解できませんでした。
申し訳ないです。
質問内容については、No.2の方の回答にて解決いたしました。
教えていただいた内容についても勉強していこうと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
このQ&Aを見た人はこんなQ&Aも見ています
-
パススルークエリの動的パラメータの指定方法
その他(データベース)
-
Accessフォーム上の値を条件として、パススルークエリを実行する方法について
その他(ソフトウェア)
-
[Access] パススルークエリーで実行すると遅い
Access(アクセス)
-
-
4
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
5
Accessからoracleのストアドプロシージャを呼び出したい。
Oracle
-
6
Accessからストアドプロシジャ実行方法教えてください
その他(データベース)
-
7
Access→Oracleデータ参照にはADOとパススルークエリどちらが良い?
その他(データベース)
-
8
Access サブフォームでの選択行の取得
その他(データベース)
-
9
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
大きなテーブルに対する問い合わせのODBC--呼び出しは失敗しました。」(Error.Number 3146)
その他(データベース)
-
12
レコード削除時に(サブ)フォームに表示される#Deleted"について"
Access(アクセス)
-
13
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
14
ACCESS テキストボックスを隙間なくきれいに並べたい
Access(アクセス)
-
15
ODBC経由の処理が遅い
SQL Server
-
16
Accessのフィールド数が255しかない=業務では使えない?
PowerPoint(パワーポイント)
-
17
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
18
Accessでブレークポイントを設定してないのに一時停止してしまう
その他(データベース)
-
19
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
20
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
はじめまして!
-
PCC-S-02201エラーの対処を教え...
-
ORA-06502のエラー
-
シェルスクリプトでオラクルの...
-
HAVING句でのBETWEEN演算子
-
PL/SQLによるCREATE TABLE後のI...
-
ビューが作成できない
-
ORACLEのUPDATE処理
-
表名を動的SQLで
-
無効なSQL文の具体例を教えてく...
-
ORA-01843: 指定した月が無効で...
-
レコードセットの開放のタイミ...
-
dmpファイルのインポート時にで...
-
CURRVALで絞り込み
-
ORA-00979エラーについて
-
accessでバイトできませんかね?
-
ORA-14459: GLOBALキーワードが...
-
PL/SQL PLS-00103エラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
PL/SQL PLS-00103エラーについて
-
CASE文のエラーについて
-
ORA-01843: 指定した月が無効で...
-
はじめまして!
-
PCC-S-02201エラーの対処を教え...
-
「ORA-00907: 右カッコがありま...
-
ORA-06502のエラー
-
シェルスクリプトでオラクルの...
-
PL/SQLによるCREATE TABLE後のI...
-
PL/SQLのコンパイルエラーにつ...
-
ACCESSでパススルークエリにパ...
-
データベースのカラムの型がCHA...
-
ビューが作成できない
-
HAVING句でのBETWEEN演算子
-
ORA-12571パケット書き込みエラ...
-
無効なSQL文の具体例を教えてく...
-
pro*c で pl/sql に変数を渡す...
-
PL/SQLでPLS-00201のエラー
-
エラーコードについて
おすすめ情報