Onlin Shop商品管理DB

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

データの一括登録と追加

CSVファイルから読み込んでデータの登録・追加・更新を行い、登録データからアップロード用データを作成して、CSVファイルに出力出来るようにする。

データ一括登録・追加フォーム作成

クエリQ_ItemDataを作成

使用テーブル:T_Item(メイン)、T_Detail

テーブルの結合方向:

テーブル フィールド 結合方向 テーブル フィールド
T_Item GroupNo T_Detail GroupNo

フォーム(F_ItemRegist)を作成

商品登録・追加用コントロールの作成
  • テキストボックス(対象仕入先指定用)、名前:[vndID]
  • 実行用ボタン、名前:[ItemRegist]、標題:[商品の登録・追加]
在庫数の更新用コントロールの作成
  • 数量更新用実行ボタン、名前:[QuantitiyInport]、標題:[在庫数の更新]
  • CSV出力用テキストボックス(対象ショップ指定用)、名前:[shopID]
  • 在庫更新CSV書き出し用、名前:[QuantitiyUpdate]、標題:[在庫数更新CSV作成]

CSVファイルからデータの取り込み

標準モジュール(AddData)

使用変数:

Dim conCsv1 As New ADODB.Connection
Dim rsCsv1 As New ADODB.Recordset
Dim rsQ_Item1 As New ADODB.Recordset
Dim rsQ_ItemDetail As New ADODB.Recordset
Dim intVdID As Integer

CSVファイルに接続するための設定

    conCsv1.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
    & "Data Source=" & CurrentProject.Path & "\data;" _
    & "Extended Properties=""text;HDR=Yes;FMT=Deimited;"""

CSVファイルのレコードセットを生成

Set rsCsv1 = conCsv1.Execute("select * from[" & GetFName & "]")

クエリのレコードセット生成
クエリQ_Itemのレコードセットを生成

    With Application.CurrentProject
        rsQ_Item1.Open "select * from Q_Item", .Connection _
        , adOpenStatic, adLockOptimistic
    End With

クエリQ_ItemDetailのレコードセットを生成

    With Application.CurrentProject
        rsQ_Item1.Open "select * from Q_ItemData", .Connection _
        , adOpenStatic, adLockOptimistic
    End With

仕入先IDで処理を分ける

    intVdID = Forms!FrenewData.VdID
    Select Case intVdID
        Case 1: 仕入先1の登録・追加処理
        Case 2: 仕入先2の登録・追加処理
        Case 3: 仕入先3の登録・追加処理
    End Select
仕入先提供ファイルからレコードの登録・追加処理

CSVファイルからのレコードの登録?追加

    Do Until rsCsv1.EOF
        rsQItemDetail.Find "T_Detail.GroupNo=" & "'" & rsCsv1("商品番号") & "'", 0, _
        adSearchForward, 1
        If rsQItemDetail.EOF = True Then
            rsQItemDetail.AddNew
            rsQItemDetailへの追加処理
            rsQItemDetail.Update
        Else
            rsQItem1.Find "ItemNo='" & rsCsv1("商品番号") & "'", 0, adSearchForward, 1
            If rsQItem1.EOF = True Then
                rsQItem1.AddNew
                rsQItem1への追加処理
                rsQItem1.Update
            End If
        End If
        rsCsv1.MoveNext
    Loop
メモ

「追加処理」部分は仕入先の数分、提供CSVに合わせた記述が必要。