##質問
Accessで伝票管理システムを作成しています。
メインで伝票を入力するフォームがあるのですが、そこで重複した商品が入力された状態で伝票登録ボタンを使用したときに
「商品が重複しています。」といったメッセージを表示し、登録が取り消されるようにしたいです。
また、どこが重複しているのかがわかるようにそのレコードに色をつけたいです。
※重複した商品を入力すること自体は、OKな仕様ですのでそのあたりは触れないでいただけると幸いです。
##概要
重複することがある状況は、手入力で入力したときのみです。
商品を入力するのは伝票入力フォームのサブフォームです。
行っている方法は、サブフォームのレコードに重複フラグを設け、登録するときにSQL文で重複しているレコードにフラグを立てるようにし、最終的に条件付き式で色をつけるようにしたいと考えています。
##現状
今は下記のようにしているのですが、これだと登録を押したときに重複していないものまでフラグが立ってしまいます。(というより全て立っていると思います。)
重複しているレコードだけ、フラグを立たせたいです。
↓伝票登録ボタン使用時の処理(追加処理など他処理は省略)
vba
1'重複チェック 2SQL = "UPDATE T_WSlipDetail SET F_ZF = True WHERE EXISTS (SELECT Count(F_ProductCode) FROM Q_WSlipDetail GROUP BY F_ProductCode HAVING T_WSlipDetail.F_ProductCode = Q_WSlipDetail.F_ProductCode and Count(F_ProductCode) >= 2)" 3 4 With Application.CurrentDb 5 .Execute SQL 6 End With 7 8 9 Dim dd As String 10 dd = Nz(DLookup("F_ZF", "T_WSlipDetail", "F_ZF = True"), 1) 11 If dd <> 1 Then 12 MsgBox "重複している商品があります。", vbOKOnly + vbExclamation, "注意" 13 Exit Sub 14 Else 15 End If
サブフォームに参照しているクエリ
Q_WSlipDetail
フィールド名 | テーブル名 | 備考 |
---|---|---|
F_SlipCode | T_WSlipDetail | 伝票番号 |
F_LineNum | T_WSlipDetail | 行番号 |
F_ProductCode | T_WSlipDetail | 商品番号 |
F_ProductName | T_Product | 商品名 |
F_Cost | T_WSlipDetail | 単価 |
F_Qty | T_WSlipDetail | 数量 |
F_ZF | T_WSlipDetail | 重複フラグ |
↓入力用
T_WSlipDetailテーブル
フィールド名 | 型 | 備考 |
---|---|---|
F_SlipCode | テキスト型 | 伝票番号 |
F_LineNum | 数値型 | 行番号 |
F_ProductCode | テキスト型 | 商品番号 |
F_Cost | 通貨型 | 単価 |
F_Qty | 数値型 | 数量 |
F_ZF | Yes/No | 重複フラグ |
助言をくだされば幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/08/07 07:39
2019/08/07 07:42
退会済みユーザー
2019/08/07 07:50
退会済みユーザー
2019/08/07 08:30
2019/08/07 08:42
退会済みユーザー
2019/08/07 08:58
2019/08/07 09:02 編集
2019/08/07 09:04
2019/08/07 09:09
退会済みユーザー
2019/08/08 00:13
2019/08/08 00:15
退会済みユーザー
2019/08/08 01:33
2019/08/08 01:37 編集
退会済みユーザー
2019/08/08 01:47
退会済みユーザー
2019/08/08 01:52
2019/08/08 02:06 編集
退会済みユーザー
2019/08/08 02:19
2019/08/08 02:24
退会済みユーザー
2019/08/08 02:39 編集
2019/08/08 02:49
2019/08/08 02:55 編集