重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お尋ねします。
OSはXP、ACCESS2002でDB作成中です。

ADOで選択クエリを開きたいのですが、エラーが出てうまくいきません。

Dim cnc As New ADODB.Connection
Dim rst As New ADODB.Recordset
Set cnc = CurrentProject.Connection

stSQL = "Q_残高計算"
rst.Open stSQL, cnc

・・・・・・・・・・・・・・・・・・・・・・・

上記のコードで、”Q_残高計算”という選択クエリを開きたいのですが、実行すると、
「実行時エラー'2147217900(80040e14)':
SQLステートメントが正しくありません。'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、または'UPDATE'を使用してください。」
というエラーメッセージが出てしまいます。

どこがまずいのでしょうか?
よろしくお願いします。

A 回答 (4件)

> パラメータの指定は「開始日」「終了日」「仕入先」の3つが必要なのでしょうか。


その通りです。
・「クエリ」-「パラメータ」でその3つを定義
・SQL条件で上記パラメータを参照
・ADOからパラメータ値を指定して実行
    • good
    • 1
この回答へのお礼

ありがとうございました。おかげさまでパラメータクエリの考え方がなんとか理解できました。またよろしくお願いします。

お礼日時:2006/05/23 18:34

「Q_残高計算」はパラメータを使用していますか?


外部パラメータを必要とするクエリの場合は、それを指定する必要があります。
例)
cmd.CommandText = "Q_残高計算"
cmd.Parameters.Append cmd.CreateParameter("param", adVarChar, adParamInput, 4, "TEST")
Set rst = cmd.Execute
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
ご指摘のとおりパラメータクエリです。
フォームから
・「開始日」と「終了日」を入力
・「仕入先」をコンボボックスで選択
して仕入先別の取引台帳を表示させたいのです。

SQLは次の通りです。

SELECT Sum([数量]*[単価]*1.05) AS 仕入計, Sum([支払金額]) AS 支払計
FROM (T_外部取引 LEFT JOIN T_物品マスター ON T_外部取引.物品ID = T_物品マスター.物品ID) INNER JOIN T_業者繰越残高 ON T_外部取引.仕入先ID = T_業者繰越残高.仕入先ID
WHERE (((T_外部取引.仕入先ID)="04") AND ((T_外部取引.納品日) Between [Forms]![F_台帳表示]![開始日]and [Forms]![F_台帳表示]![開始日])) OR (((T_外部取引.仕入先ID)="04") AND ((T_外部取引.支払日) Between [Forms]![F_台帳表示]![開始日]and [Forms]![F_台帳表示]![開始日]));

おわかりのように、取引テーブル(T_外部取引) と物品テーブル(T_物品マスター)、繰越テーブル(T_業者繰越残高)の3つのテーブルを結合し、仕入先IDと指定した期間をもとに仕入・払出取引を抽出し、それぞれの合計を求めるものです。

パラメータの指定は「開始日」「終了日」「仕入先」の3つが必要なのでしょうか。

お礼日時:2006/05/19 08:46

これではだめですか?


------------------------------------
Dim cnc As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim cmd As New ADODB.Command
Set cnc = CurrentProject.Connection
cmd.ActiveConnection = cnc
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Q_残高計算"
Set rs = cmd.Execute

この回答への補足

早速のご回答ありがとうございます。いま出張中なのでDBアクセスができません。月曜日にやってみます。

補足日時:2006/05/12 10:13
    • good
    • 0
この回答へのお礼

やってみましたが、下記エラーが出ました。
「実行時エラー '-2147217904 (80040e10)':
パラメータが少なすぎます。1を指定してください。」
どういう意味なのでしょうか。
アドバイスをいただけますか。

お礼日時:2006/05/16 18:32

オブジェクトとしてのクエリ「Q_残高計算」を開くことはできるのですか?



できないならば、そこからデバッグですね。

できるのならば、コピー&ペーストで半角英数文字のみでクエリ名を作成してみるとVBAで開けますか?

この回答への補足

早速のご回答ありがとうございます。出張中なのでDBアクセスができません。月曜日にやってみます。

補足日時:2006/05/12 10:19
    • good
    • 0
この回答へのお礼

すべて英文字の「zan」という名前にしてやってみましたが、下記エラーメッセージが出てデバッグ画面になります。
「実行時エラー '-2147217904 (80040e10)':
パラメータが少なすぎます。1を指定してください。」
どうすればいいのか、アドバイスを頂けないでしょうか。

お礼日時:2006/05/16 18:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す