##質問内容
伝票管理システムを作成しています。
顧客マスタでサブフォームの帳票でレコードごとに削除ボタンがあり、押すと論理削除で
テーブルには入っているけどフォームでは表示しないようにしているのですが、マスタのヘッダーにある検索ボタンを押したときに、論理削除したデータは検索対象から外したいのですがどうすればよいでしょうか。
##概要
マスタフォームには顧客番号、顧客名、住所で検索できるようにしてあります。
削除時の手順
ボタンを押す
↓
顧客マスタを参照しているテーブルにあるYes/No型のF_DeleteFlagというフィールドにチェックが入る
↓
フォーム上では表示されなくなる
VBA
1'---------------------------- 2'削除ボタン使用時 3'---------------------------- 4 5Private Sub Button_Delete_Click() 6 7 'レコードを削除する 8 9 Dim lans As Long 10 11 lans = MsgBox("削除してもよろしいですか?", vbYesNo + vbInformation, "確認") 12 13 If lans = vbNo Then 14 Exit Sub 15 End If 16 17 '削除フラグにチェックを入れる 18 19 Dim SQL As String 20 21 SQL = "UPDATE T_Customer SET F_DeleteFlag = True WHERE F_CustomerCode = """ & Me!F_CustomerCode & """ And F_DeleteFlag = False" 22 23 With Application.CurrentDb 24 .Execute SQL 25 End With 26 27 'チェックが入っているレコード非表示にする 28 29 Form.Filter = "F_DeleteFlag = False" 30 Form.FilterOnLoad = True 31 32 'レコード数をカウントする 33 34 Dim total As String 35 36 total = DCount("F_CustomerCode", "T_Customer", "F_DeleteFlag = False") 37 38 Forms!F_CustomerMaster.Text_Num = total + "件" 39 40End Sub
こんな感じで動かしています
これをマスタの中で検索をするときに論理削除したデータは検索対象にしないようにしたいです。
VBA
1'---------------------------- 2'検索ボタン使用時 3'---------------------------- 4 5Private Sub Button_Search_Click() 6 7 Dim total As String 8 9 'フィルタをかける 10 11 Me!Sub_CustomerMaster.Form.Filter = "1=1 " 12 13 '顧客番号 14 If Nz(Me!Text_CustomerCode, "") = "" Then 15 Else: Me!Sub_CustomerMaster.Form.Filter = Me!Sub_CustomerMaster.Form.Filter + "and F_CustomerCode like ""*" & Text_CustomerCode & "*""" 16 End If 17 18 '顧客名 19 If Nz(Me!Text_CustomerName, "") = "" Then 20 Else: Me!Sub_CustomerMaster.Form.Filter = Me!Sub_CustomerMaster.Form.Filter + "and F_CustomerName like ""*" & Text_CustomerName & "*""" 21 End If 22 23 '住所 24 If Nz(Me!Text_Address, "") = "" Then 25 Else: Me!Sub_CustomerMaster.Form.Filter = Me!Sub_CustomerMaster.Form.Filter + "and F_Address like ""*" & Text_Address & "*""" 26 End If 27 28 Me!Sub_CustomerMaster.Form.FilterOn = True 29 30 'フィルタをかけた結果が0件だったらメッセージボックスを表示する 31 32 If Sub_CustomerMaster.Form.Recordset.RecordCount = 0 Then 33 34 MsgBox "検索条件に該当するデータは見つかりませんでした。" 35 36 End If 37 38 '件数更新 39 40 total = DCount("F_CustomerCode", "T_Customer", Me!Sub_CustomerMaster.Form.Filter) 41 42 Me.Text_Num = total + "件" 43 44End Sub
検索ボタンを押したときの処理です。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/21 13:11
2019/06/21 13:32
2019/06/21 13:39
退会済みユーザー
2019/06/24 00:13