• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Access】クエリをソースに移植する方法)

【Access】クエリをソースに移植する方法

このQ&Aのポイント
  • AccessデータベースのクエリをVisual Basicのフォームに移植する方法について教えてください。
  • クエリの内容は、テーブルT_TBLから条件に一致するレコードをテーブルW_TBLに挿入するものです。
  • また、txt_keyを完全一致させる方法と、未入力の場合は全件ヒットさせる方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.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 & '*'));"

iroha_168
質問者

お礼

ご回答ありがとうございます。 ご教示いただいた記述を参考にさせていただいた所、意図した動作となりました。 ちなみにやりたかった事とは下記のような動作となります。 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 このたびはどうもありがとうございました。 以上、よろしくお願いします。

関連するQ&A

専門家に質問してみよう