ショップ個別データの編集
ショッピングカート毎にアップロード用CSVファイルでバリエーションデータなどの記述の仕方が異なるため、このフォームで編集出来るようにする。
データ編集フォーム作成
個別データ用クエリQ_PutItemを作成
使用テーブル:T_Putup(メイン)、T_Shop、T_Detail、T_Category2
テーブルの結合方向:
テーブル | フィールド | 結合方向 | テーブル | フィールド |
---|---|---|---|---|
T_Putup | SID | → | T_Shop | SID |
GroupNo | → | T_Detail | GroupNo | |
T_Detail | Ctg1ID | → | T_Category2 | Ctg1ID |
Ctg2ID | → | T_Category2 | Ctg2ID |
データ編集フォーム(F_ShopEdit)を作成
- ショップ抽出用、カテゴリー・バリエーション絞込み用テキストボックスと実行ボタンを作成
- サブフォーム(F_ShopEditSub)を配置
使用クエリ:Q_PutItem
抽出及び絞込み用コントロールの設定
ショップ抽出用(ShopID)、カテゴリー絞込み用(Category)をコンポボックスに変更、[値集合ソース]をT_Shop、T_Category2に設定、バリエーション絞込み用(Variaition)は変更なし
コントロールの値に応じて、ラベルの表示を変える
- レコード抽出対象のショップ名を表示するラベル(名前:[S_Name];標題:ショップ名)を配置
- [ShopID]の値に応じて表示ショップ名を変更する。
クラスモジュールShopID_Change([イベント]-[変更時]のプロシージャー)
S_Name.Caption = "ショップ名:" & DLookup("[ShopName]", "Q_Shop", "[SID]=" _
& [ShopID])
クエリ抽出条件にコントロールの値を使う
サブフォームの[レコードソース]クエリ、[SID]フィールド[抽出条件]行
[Forms]![F_ShopEdit]![ShopID]
サブフォームのクエリーを更新する
ラベル[S_Name]の[イベント]-[クリック時]のイベントプロシージャー(S_Name_Click)で更新
Me.F_ShopEditSub.Requery
サブフォームのレコードにフィルターを掛ける
サブフォームのレコードをカテゴリー又はバリエーションで絞り込んで編集出来るようにする。
カテゴリー絞込みボタン(名前:[C_Narrew];標題:[絞込み])
クラスモジュール(C_Narrew_Click)
Forms!F_ShopEdit!F_ShopEditSub.Form.Filter = _ "Category2='" & Forms!F_ShopEdit.Category & "'" Forms!F_ShopEdit!F_ShopEditSub.Form.FilterOn = True
バリエーション絞込みボタン(名前:[V_Narrew];標題:[絞込み])
クラスモジュール(V_Narrew_Click)
Forms!F_ShopEdit!F_ShopEditSub.Form.Filter = _ "VarDiv='" & Forms!F_ShopEdit.Variation & "'" Forms!F_ShopEdit!F_ShopEditSub.Form.FilterOn = True
絞込みフィルターをクリアにする
フィルターのクリアと同時にテキストボックスの値もクリアにする。
フィルタークリアボタン(名前:[F_Clear];標題:[クリア])
クラスモジュール(F_Clear_Click)
テキストボックスの値のクリア処理
Forms!F_ShopEdit.Category = "" Forms!F_ShopEdit.Variation = ""
フィルターのクリア処理
Forms!F_ShopEdit!F_ShopEditSub.Form.Filter = "category2=true" 'サブフォームを再クエリする。 Forms!F_ShopEdit!F_ShopEditSub.Form.Requery
メモ
絞込みフィルターをクリアするのに、”<フォーム名>.FilterOn = False”にすると、ショップ名でのレコード抽出が出来なくなる。そのため、”Category2=True"でフィルターを掛けることで、今は代用しておく。
入力レコードの自動作成
レコードからスクリプトで生成できるデータが有れば、自動作成してフィールドに入れる。ここでは、バリエーション情報を作成することにします。
バリエーション情報の作成
標準モジュール(ShopData)
変数の宣言
Dim rsFormS As Recordset 'サブフォームのレコードセット Dim rsQ_Item As New ADODB.Recordset 'Q_Itemのレコードセット Dim rsQ_Putup As New ADODB.Recordset 'Q_Putupのレコードセット Dim cnt As Integer Dim strVrt As String
クエリQ_ItemのレコードセットrsQ_Itemの生成
[variation]フィールドに値の有る物に絞り込ん生成する。
With Application.CurrentProject rsQ_Item.Open "select * from Q_Item where variation <> ''", .Connection _ , adOpenStatic, adLockOptimistic End With
'サブフォームF_ShopEditSubのレコードでレコードセットを生成
Set rsFormS = Forms!F_ShopEdit.F_ShopEditSub.Form.RecordsetClone
rsFormSから[VarDiv]フィールドに値の有る物だけを抽出
rsFormS.Filter = "VarDiv <> ''" Set rsFormS = rsFormS.OpenRecordse
クエリQ_Putupのレコードセットの生成
ショップコード[SID]で出店先を絞り込んで生成
With Application.CurrentProject rsQ_Putup.Open "select * from Q_Putup where SID =" & intSID, .Connection _ , adOpenStatic, adLockOptimistic End With
Select Caseステートメントで処理を分ける
Do Until rstFormS.EOF '編集レコードの抽出 rsQ_Item.Filter = "GroupNo=" & rsFormS!GroupNo 'ショップコードに合わせて処理を分ける。 Select Case intSID Case 1: Shop1の処理へ Case 2: Shop2の処理へ End Select rstFormS.MoveNext Loop MsgBox "バリエーションデータの作成が終わりました。"
クラスモジュール(Execute_Click)
引数(Me!ShopID)は変数[intSID]に引き渡す
<自動作成プロシージャー名> (Me!ShopID)
各Shopの処理については、ショップ(カート)フォーマの規定に沿って個々に作成する。