Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


881 / 2272 ツリー ←次へ | 前へ→

【9671】SQLの構文 AT 07/7/8(日) 18:32 質問[未読]
【9673】Re:SQLの構文 hatena 07/7/9(月) 1:41 回答[未読]
【9679】Re:SQLの構文 AT 07/7/9(月) 17:17 お礼[未読]

【9671】SQLの構文
質問  AT  - 07/7/8(日) 18:32 -

引用なし
パスワード
   こんにちは、お世話になります。
初歩的なことで、申し訳ないのですが教えて下さい。

クエリで実行すると抽出結果が表示されるのですが、
モジュールで宣言して実行すると、
パラメータ入力を聞かれてしまいます。
【ロット台帳変更_引張表示.ロット一括変更】??インプットボックス

StrSQL = "SELECT ロット台帳変更用.* FROM ロット台帳変更用 " _
    & "INNER JOIN ロット台帳変更_引張表示 " _
    & "ON ロット台帳変更用.ロットNo = ロット台帳変更_引張表示.ロットNo " _
    & "WHERE (((ロット台帳変更_引張表示.ロット一括変更) = True ))" _
    & "ORDER BY ロット台帳変更用.ロットNo"
                    
DoCmd.OpenForm "ロット台帳変更", , StrSQL

パラメータを聞かれるということは、WHERE句の構文がおかしいと
思うのですが、どこがおかしいでしょうか。
いろいろ試してみたのですが、うまくいきませんでした。
SELECT句、FROM句で指定しているテーブル以外のテーブルをWHERE句で
指定してはいけないのでしょうか。
宜しくお願いします。

【9673】Re:SQLの構文
回答  hatena  - 07/7/9(月) 1:41 -

引用なし
パスワード
   >クエリで実行すると抽出結果が表示されるのですが、
>モジュールで宣言して実行すると、
>パラメータ入力を聞かれてしまいます。
>【ロット台帳変更_引張表示.ロット一括変更】??インプットボックス
>
>StrSQL = "SELECT ロット台帳変更用.* FROM ロット台帳変更用 " _
>    & "INNER JOIN ロット台帳変更_引張表示 " _
>    & "ON ロット台帳変更用.ロットNo = ロット台帳変更_引張表示.ロットNo " _
>    & "WHERE (((ロット台帳変更_引張表示.ロット一括変更) = True ))" _
>    & "ORDER BY ロット台帳変更用.ロットNo"
>                    
>DoCmd.OpenForm "ロット台帳変更", , StrSQL

OpenFormの第3引数 FilterName にクエリ名またはSQLを設定した場合は、
WHERE句が フォームのFilterプロパティに、ORDER BY句がOrderByプロパティに
設定されます。SELECT句、FROM句は関係有りません。

パラメータが出るのは、フォームのレコードソースのクエリに、
ロット台帳変更_引張表示 が含まれてないからではないですか。

フォームのレコードソースを「ロット台帳変更_引張表示」が
含まれるものに変更するか、
下記のように第4引数に抽出条件を設定するようにします。

StrSQL = "ロットNo In " _
    & "(SELECT T.ロットNo FROM ロット台帳変更_引張表示 AS T" _
    & " WHERE ロット一括変更 = True)" _
                    
DoCmd.OpenForm "ロット台帳変更", , , StrSQL

【9679】Re:SQLの構文
お礼  AT  - 07/7/9(月) 17:17 -

引用なし
パスワード
   hatena さん ご教授ありがとうございます。

第4引数を使用する方法で処理することができました。
今回、【ロット台帳変更用】テーブルを使用したかったので。
勉強になりました、ありがとうございました。

>OpenFormの第3引数 FilterName にクエリ名またはSQLを設定した場合は、
>WHERE句が フォームのFilterプロパティに、ORDER BY句がOrderByプロパティに
>設定されます。SELECT句、FROM句は関係有りません。
>
>パラメータが出るのは、フォームのレコードソースのクエリに、
>ロット台帳変更_引張表示 が含まれてないからではないですか。
>
>フォームのレコードソースを「ロット台帳変更_引張表示」が
>含まれるものに変更するか、
>下記のように第4引数に抽出条件を設定するようにします。
>
>StrSQL = "ロットNo In " _
>    & "(SELECT T.ロットNo FROM ロット台帳変更_引張表示 AS T" _
>    & " WHERE ロット一括変更 = True)" _
>                    
>DoCmd.OpenForm "ロット台帳変更", , , StrSQL

881 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free