商品閲覧・編集フォーム
商品グループ単位に商品の各項目を一画面で閲覧できるように単票で作成する。
品番、販売価格、仕入価格等のほかHTMLのdescriptionやVariationも含める。
商品詳細閲覧フォーム作成
詳細クエリQ_Detail
使用テーブル:
T_Detail(メイン),T_Vender、T_Brand、T_Category1、T_Category2、T_Shipping、T_Status
テーブル結合方向:
テーブル | フィールド | 結合方向 | テーブル | フィールド |
---|---|---|---|---|
T_Detail | VID | → | T_Vendor | VID |
BrdID | → | T_Brand | BrdID | |
Ctg1ID | → | T_Category1 | Ctg1ID | |
Ctg1ID | → | T_Category2 | Ctg1ID | |
Ctg2ID | → | Ctg2ID | ||
ShipID | → | T_Shipping | ShipID | |
StsID | → | T_Status | StsID |
商品詳細閲覧フォームF_AddVeiw
- 使用クエリ:Q_Detailの全フィールド
- 益率表示用に非連結コントロールを追加
コントロールソース:=([Price]-[Whlprice])/[Price]
フォーム上に商品画像を表示
- データベースファイルと同じフォルダ内に画像用フォルダ[imgaes]を作成。
- フォームにイメージコントロール(コントロール名を”itemImages”)を配置して式を記述
イメージコントロールに任意の画像を表示
コントロールソース:=[CurrentProject].[Path] & "\images\" & [itemImages]
サブフォーム(F_AddVeiwSub)にバリエーションItemをリスト表示
サブフォームは単一商品では商品番号、JANコードと在庫数を、バリエーションのある場合は商品番号、JANコード、バリエーションと在庫数が表形式で表示される。そのため、単一商品で有っても[商品代表番号]と[商品番号]の入力は必要。
商品クエリQ_Itemを作成
使用テーブル:T_Item
サブフォームの配置
- 使用クエリ:Q_Item
- メインフォームとのリンクフィールド:GroupNo
- GroupNoフィールドは非表示
フォームを書き込み不可で開き、ボタンクリックで登録・編集を可能にする
フォーム上にボタン(標題[新規登録];名前[L_ItemAdd]、標題[編集];名前[L_ItemEdit])のボタンを配置。
フォームを書き込み不可で開く
クラスモジュールForm_Open(Cancel As Integer)
Me.AllowAdditions = False Me.AllowEdit = False Me.F_AddViewSub.Form.AllowAdditions = False Me.F_AddViewSub.Form.Edit = False
[新規登録]ボタンのクリックイベント(L_ItemAdd_Click)
メインとサブフォームを書き込み可能にする
Me.AllowAdditions = True Me.F_AddViewSub.Form.Additions = True
カーソルを新規レコードに移動させる
Docmd.GoToRecord , , acNewRec
任意のコントロール(商品管理番号)にフォーカスを移動する
Me.GroupNo.SetFocus
[編集]ボタンのクリックイベント(L_ItemEdit_Click)
メインとサブフォームをデータ編集可能にする
Me.AllowEdit = True Me.F_AddViewSub.Form.Edit = True
登録・編集の終了後、再度、書き込み不可に戻す。
[追加・編集終了]ボタンクリックイベント(L_AE_End_Click)
メイン・サブフォーム両ホームを追加・編集不可にする
Me.F_AddViewSub.Form.AllowAdditions = False Me.F_AddViewSub.Form.AllowEdits = False Me.AllowAdditions = False Me.AllowEdits = False
フォームのコントロール値でレコードの検索が出来るようにする。
1.非連結コントロール、検索ボタン、フィルタークリアボタン等を配置
- 非連結テキストボックス、名前[searchWord]
- 検索実行用ボタン、標題[検索];名前[btnNumSearch]
- フィルタークリアボタン、標題[フィルタークリア];名前[btnClear]
- 検索終了ボタン、標題[検索終了];名前[btnEndSearch]
2.フォームの検索用コントロールの[可視]を[いいえ]に設定
3.フォーム上コントロールの表示非表示を切り替える
非表示コントロールをラベル[商品検索](L_ItemSearch)のクリックで表示
クラスモジュール(L_ItemSearch_Click)
Me.AllowEdits = True Me.searchWord.Visible = True Me.L_ItemNo.Visible = True Me.btnNumSearch.Visible = True Me.btnClear.Visible = True Me.butEndSearch = true
ボタン[検索終了]をクリックで非表示に戻す。
クラスモジュール(btnEndSearch_Click)
Me.AllowEdits = False Me.searchWord.Visible = False Me.L_ItemNo.Visible = False Me.btnNumSearch.Visible = False Me.btnClear.Visible = False Me.butEndSearch = False
フォームのコントロール値でレコードを抽出
クラスモジュール(btnNumSearch_Click)
Dim dbs As Database Dim rst As Recordset Dim varItemNo As Variant Dim strSarch As String Set dbs = CurrentDb Set rst = dbs.OpenRecordset("T_Item" ,dbOpenDynaset) varItemNo = Form_F_AddView.searchWord rst.Filter = "ItemNo='" & varItemNo &"'" Set rst = rst.OpenRecordset Form_F_AddView.Filter = "GroupNo='" & rst!GroupNo & "'" Form_F_AddView.FilterOn = True
フォームのフィルターを解除
クラスモジュール(btnClear_Click)
Me.FilterOn = False