Onlin Shop商品管理DB

My Notes 忘れっぽい自分のためのメモ

商品閲覧・編集フォーム

商品グループ単位に商品の各項目を一画面で閲覧できるように単票で作成する。
品番、販売価格、仕入価格等のほか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