前提・実現したいこと
accessのフォームに手入力で日付を二つ入力し、二つの日付の間のデータを
Excelで出力する。というものを作りたいのですが、Excelで出したいシートが
二つあり、「変更」というシートと「キャンセル」というシートを出力したい
です。その為に「変更」と「キャンセル」という名前のテーブルを持っています。
データがテーブルAに変更の日付や受注NOがあり、テーブルBにキャンセルの日付や受注NOがあります。テーブルBにキャンセル区分というフィールドを持っていて、キャンセル区分が1なら、キャンセルのデータ、0なら変更のデータと判別しています。
キャンセル区分が1だったら、テーブルBのキャンセル日付がフォームで入力した日付間のデータをテーブル「キャンセル」に、キャンセル区分が0だったら、テーブルAの変更日付がフォームで入力した日付間のデータをテーブル「変更」に入るようにしたいです。
発生している問題・エラーメッセージ
最初のデータがキャンセル区分1ならキャセルのデータのみ、キャンセル区分0なら変更のデータしか出力されません。どちらのデータもある日付を入力しても、
片方しか出ないので困っております。
該当のソースコード
If IsNull(日付1) = True Then
MsgBox "日付を入力して下さい"
ElseIf IsNull(日付2) = True Then
MsgBox "日付を入力して下さい"
Else
sql = "SELECT *"
sql = sql & " FROM テーブルB"
sql = sql & " WHERE (テーブルB.[キャンセル日]) Between #" & [Forms]![日付入力フォーム]![日付1] & "# And #" & [Forms]![日付入力フォーム]![日付2] + 1 & "#"
sql = sql & " テーブルB.キャンセル区分=1"
Set rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset)
If rs.BOF = False Then sql = "INSERT INTO キャンセル ( キャンセル日, 受注№, 受注明細№ )" sql = sql & "SELECT テーブルB.[キャンセル日], テーブルB.受注№, テーブルB.受注明細№" sql = sql & " WHERE ((テーブルB.[キャンセル変更日]) Between #" & [Forms]![日付入力フォーム]![日付1] & "# And #" & [Forms]![日付入力フォーム]![日付2] + 1 & "#" sql = sql & " AND ((テーブルB.[キャンセル区分])=1))" DoCmd.RunSQL sql Else sql2 = "SELECT テーブルA.*" sql2 = sql2 & " FROM テーブルA" sql2 = sql2 & " WHERE (テーブルA.変更日) Between #" & [Forms]![日付入力フォーム]![日付1] & "# And #" & [Forms]![日付入力フォーム]![日付2] + 1 & "#" Set rs2 = CurrentDb.OpenRecordset(sql2, dbOpenDynaset) If rs2.BOF = False Then sql2 = "INSERT INTO 変更 ( 変更日, 受注№, 受注明細№ )" sql2 = sql2 & " SELECT テーブルA.変更日, テーブルA.受注№, テーブルA.受注明細№" sql2 = sql2 & " WHERE (テーブルA.変更日) Between #" & [Forms]![日付入力フォーム]![日付1] & "# And #" & [Forms]![日付入力フォーム]![日付2] + 1 & "#" DoCmd.RunSQL sql2 End If End If
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー