- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Access】クエリをソースに移植する方法)
【Access】クエリをソースに移植する方法
このQ&Aのポイント
- AccessデータベースのクエリをVisual Basicのフォームに移植する方法について教えてください。
- クエリの内容は、テーブルT_TBLから条件に一致するレコードをテーブルW_TBLに挿入するものです。
- また、txt_keyを完全一致させる方法と、未入力の場合は全件ヒットさせる方法についても教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
(1) 勘違いでなければ。 keyの抽出条件に以下を設定 [Forms]![F_FORM]![txt_key] Is Null 以下のようになります。 INSERT INTO W_TBL SELECT T_TBL.* FROM T_TBL WHERE (((T_TBL.key) Like '*' & [Forms]![F_FORM]![txt_key] & '*') AND ((T_TBL.flag) Like '*' & [Forms]![F_FORM]![txt_flag] & '*')) OR (([Forms]![F_FORM]![txt_key] Is Null)); (2) 移植とはコードの中にSQL文を書く方法ということで、 書き方はいろいろですが、たとえば、 Dim strSQL As String strSQL = strSQL & "NSERT INTO W_TBL " strSQL = strSQL & "SELECT T_TBL.* FROM T_TBL " strSQL = strSQL & "WHERE (((T_TBL.key) Like '*' & Forms!F_FORM!txt_key & '*') And " strSQL = strSQL & "((T_TBL.flag) Like '*' & Forms!F_FORM!txt_flag & '*'));"
お礼
ご回答ありがとうございます。 ご教示いただいた記述を参考にさせていただいた所、意図した動作となりました。 ちなみにやりたかった事とは下記のような動作となります。 txt_key = 12, txt_flag = 1・・・該当id3をINSERT txt_key = 1234, txt_flag = 1・・・該当id1をINSERT txt_key = 12, txt_flag = 0・・・該当id2をINSERT txt_key = 1, txt_flag = 1・・・該当なし txt_key = "", txt_flag = 1・・・該当id1, 3をINSERT txt_key = "", txt_flag = 0・・・該当id2をINSERT なお、上記の対応が出来たと思う【フォームのVisual Basic】は下記となります。 Option Compare Database Option Explicit Private Sub cmd_insert_Click() Dim strSQL As String strSQL = strSQL & "INSERT INTO W_TBL " strSQL = strSQL & "SELECT T_TBL.* FROM T_TBL " strSQL = strSQL & "WHERE T_TBL.flag Like '*" & Me.txt_flag & "*' " If Nz(Me.txt_key, "") <> "" Then strSQL = strSQL & "AND T_TBL.key = " & Me.txt_key End If DoCmd.RunSQL strSQL End Sub このたびはどうもありがとうございました。 以上、よろしくお願いします。