dポイントプレゼントキャンペーン実施中!

8月7日の質問No.8708191「Accessクロス集計で列数が多い場合の処理方法」ですが一部、未解決となります。
ですので、一旦その質問は締切りまして、再度内容を吟味して質問させていただきます。

関連会社から商品情報(十万件以上)に関する複数の「.txt」ファイルを頂きました。
この「.txt」ファイルには、商品に関する情報が記載されており、それぞれが関連し合ったファイルです。

これらを適切に関連を持たせ、最終的にはアップロード用に「.csv」として出力させたい為、内容が横1行に吐き出されるようにしたいです。

初歩的な質問になりますが教えてください。

作業環境はWindows7にExcel2003、Access2003がインストールされていますが、そのどちらも素人程度にしか扱えない状況です。
「.txt」の主情報(商品マスタ)は十万行以上になります。

金銭的なバックアップは見込めませんが、無料ソフトの導入などは問題ないです。
また、私以上に素人がこの処理をするかもしれない場合、どのような方法でアップロード用の情報にするのが良いでしょうか?

※添付画像が削除されました。

A 回答 (37件中21~30件)

すみません。

文末のコードです

Private Sub テーブル初期化_Click()
If MsgBox("全テーブルを初期化します。", vbYesNoCancel) = 6 Then
DoCmd.SetWarnings True
DoCmd.RunSQL ("delete from カテゴリ ;")
DoCmd.RunSQL ("delete from カテゴリ関連 ;")
DoCmd.RunSQL ("delete from カテゴリ中継 ;")
DoCmd.RunSQL ("delete from 成分 ;")
DoCmd.RunSQL ("delete from 成分関連 ;")
DoCmd.RunSQL ("delete from 説明 ;")
DoCmd.RunSQL ("delete from 商品マスタ;")
DoCmd.RunSQL ("delete from ブランド ;")
DoCmd.RunSQL ("delete from メーカー ;")
MsgBox ("テーブル初期化完了")
DoCmd.SetWarnings False
Else
MsgBox ("取り消し")
End If
End Sub
Private Sub txtインポート_Click()
DoCmd.SetWarnings True 'シングルクォーテーションより右はメモです。 警告表示 True 非表示 False
DoCmd.TransferText acImportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True
DoCmd.TransferText acImportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True
DoCmd.TransferText acImportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True
DoCmd.TransferText acImportDelim, , "説明", "D:\okwave\テキスト\説明.txt", True
DoCmd.TransferText acImportDelim, , "成分関連", "D:\okwave\テキスト\成分関連.txt", True
DoCmd.TransferText acImportDelim, , "成分", "D:\okwave\テキスト\成分.txt", True
DoCmd.TransferText acImportDelim, , "カテゴリ中継", "D:\okwave\テキスト\カテゴリ中継.txt", True
DoCmd.RunSQL ("INSERT into カテゴリ関連(成分コード,カテゴリコード) select 成分コード,大分類コード&中分類コード&小分類コード from カテゴリ中継 ; ")
DoCmd.TransferText acImportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True
DoCmd.SetWarnings True
MsgBox ("txtファイルインポート完了")
End Sub
Private Sub txtファイルエキスポート_Click()
DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\テキスト\カテゴリ.txt", True
DoCmd.TransferText acExportDelim, , "カテゴリ関連", "D:\okwave\テキスト\カテゴリ関連.txt", True
DoCmd.TransferText acExportDelim, , "カテゴリ中継", "D:\okwave\テキスト\カテゴリ中継.txt", True
DoCmd.TransferText acExportDelim, , "ブランド", "D:\okwave\テキスト\ブランド.txt", True
DoCmd.TransferText acExportDelim, , "メーカー", "D:\okwave\テキスト\メーカー.txt", True
DoCmd.TransferText acExportDelim, , "商品マスタ", "D:\okwave\テキスト\商品マスタ.txt", True
DoCmd.TransferText acExportDelim, , "成分", "D:\okwave\テキスト\成分.txt", True
DoCmd.TransferText acExportDelim, , "成分関連", "D:\okwave\テキスト\成分関連.txt", True
DoCmd.TransferText acExportDelim, , "説明", "D:\okwave\テキスト\説明.txt", True

MsgBox ("D:\okwave\テキストに新規作成しました")

この回答への補足

回答ありがとうございます。

恐らくですが、VBAの最後尾のEnd Subが足りなかったようなので、付け加え7まで順調に進みました。

7.の「但し成分関連.TXTは 成分中継へコピペ」は、カテゴリの事だと思いましたので
カテゴリ関連.txtをカテゴリ中継へコピペしました。

D:\okwave\テキスト\テキストカテゴリ関連.txtには、何も貼り付けない状態でよいのでしょうか?

そしてまた8.の【TXTファイルインポート】で何も起こりませんでした…

VBAの貼り付け場所が適切でないのかも?(私がいまいち理解していない為です;)
念の為、記述した時の状況をお伝えします。

以前同様、項目名のクリックイベントを立ち上げてコーディング画面にVBAをコピペしました。
左側のオブジェクトに「項目名」、右側のイベントに「Click」となっており、
画面最上部に「Option Compare Database」と入っています。
その下に記述していただきましたVBAを入力しています。

こうしてインターネットを通してのやりとりだからこそ気づかないだけであって
きっと、原因はなんてことない事なのかもしれません。

それなのに毎度の事ながら懇切丁寧に教えてくださってありがとうございます。

私ではたいした解決にはならないと思いますが、明日またいじって検証してみます。

補足日時:2014/09/11 19:43
    • good
    • 0

テストお願いします。



1.ラベルの表示とラベル名の変更
 CSVファイルインポート⇒TXTファイルインポート
 CSVファイルエキスポート⇒TXTファイルエキスポート

2.テーブル追加とフィールド名確認
 カテゴリ関連フィールド項目が3つに分かれているためテキストデータを
 直接テーブルに取り込むことができません。一旦テキストデータ列と同じの
 中継テーブルに取り込み、これをカテゴリテーブルに移します

 カテゴリ関連
  成分コード(テキスト形式)
  カテゴリコード(テキスト形式)

 カテゴリ中継
  成分コード(テキスト形式)
  大分類コード(テキスト形式)
  中分類コード(テキスト形式)
  小分類コード(テキスト形式)

  商品マスタ
  商品コード
商品名
メーカコード
  ブランドコード
  重要成分コード
  販売価格
  廃番フラグ
  更新日

3.D:ドライブにフォルダを追加
 D:\OKWAVE
 D:\OKWAVE\テキスト

4.文末のコードを差し替え

5.メニューを再起動

 【テーブルブル初期化】のラベルをクリック
 【TXTファイルエキスポート】のラベルをクリック

6.添付を参考にして、リレーションの再設定

7.客先よりのテキストデータをD:OKWAVE\テキストのファイルにコピペ
 但し成分関連.TXTは 成分中継へコピペ

8.メニューの【TXTファイルインポート】のラベルをクリック
「関連がある複数のテキストファイルの扱い方」の回答画像16
    • good
    • 0

>回答No.1のお礼欄で提示しましたフィールドの順番と、実際の各「.txt」(関連会社から頂いたままの不要な部分が入った)のフィールドの順番とでずれてしまったためでしょうか?


 フィールドの順は影響しません。テーブル間に1:∞のリレーション1側のテーブルからやります。
 このかかわりとカテゴリ関連で、まずリレーションシップを全て除去して単体でのインポートから始めます。
 フィールドの並び順は、ウィザードでフォームフォームを作成した時の配置の順番です。
 またデータ入力時の順もこれで決まります。配置も入力順もフォーム上で修正可能です。
 関連図見直しています。赤字がキーポイントのようですね。
 商品マスタ内の大分類コードもカテゴリ関連の大分類コードも成分コードと同種の意味付けのようですね
 今回の処理に関係ないですがこの情報も先方はお持ちのようですね

尚横並びについては NotFound404様 30246kiku様が対処下さっているようで、こちらでの解決が望めますね
    • good
    • 0

>の設定時、!マークで「これは新規ラベルで、コントロールに関連付けられていません。

」と表示されました。

そうですね、CSVとTXT差し替えたためラベルのイベント設定と、コードの対応が狂ったことが第一です。
次にテーブルにインポートする順番の再考が必要です、これにカテゴリ関連が絡んでいます。
落ち着いて見直ししてみます。

この回答への補足

回答ありがとうございます。

> そうですね、CSVとTXT差し替えたためラベルのイベント設定と、コードの対応が狂ったことが第一です。
拡張子.txtのVBAを差し替える前の段階でラベルを設定しました。
一度削除して、設定し直した方がよろしいでしょうか。

> 次にテーブルにインポートする順番の再考が必要です、これにカテゴリ関連が絡んでいます。
回答No.1のお礼欄で提示しましたフィールドの順番と、実際の各「.txt」(関連会社から頂いたままの不要な部分が入った)のフィールドの順番とでずれてしまったためでしょうか?

お手数おかけ致します><

補足日時:2014/09/10 18:05
    • good
    • 0

> 1.商品マスタの成分コードは主成分コードの事ですね はい、商品マスタの成分コードは実は重要成分コードとなっておりましたが


 このままでもOKですが、先々のことを考えるとテーブルのフィールド名を【重要成分コード】と変更しましょう

>添付画像少々修正します。(添付直しが出来ず、削除されてしまいました…)
>使わないからと省いてしまいましたが、商品マスタの「成分コード」と「親カテゴリコード」も赤太字です。
 元の添付図もなくなりましたね。大変参考になる情報です。
 添付図の控えとっていませんもう一度添付して下さい。新規に質問を立ち上げてでも

> 2.カテゴリ関連テーブルの大分類、中分類、小分類を合わせるとカテゴリーコードになりませんか
>合わせてカテゴリコードを示すような他のテキストデータが無いのでなんとも言えませんが、テキストデータはタブで分かれています。
 これとのリレーションを全て外して
 テーブルの大分類をカテゴリコード(テキスト型)、中分類(テキスト型)、小分類(テキスト型)して下さい。


> 3.成分関連テーブルは成分コードだけで主コードになりますか

>成分関連テーブルも、説明テーブル同様に縦に展開されている(1つの商品番号に複数の成分コード×レコード)為、主コードにはならないでしょうか。
これはこのままにしてインポート完了後検証しましょう

では、テーブル初期化の作業に移ってみますね。

>VBAを見ると「カテゴリ関連.csv」となっているのですが、「カテゴリ関連.txt」はCSV形式に修正するべきでしょうか?
 ダメです拡張子も同じものである必要があります。
下記と差し替えて下さい。
--------------------------------------------------------------
Private Sub テーブル初期化_Click()
If MsgBox("全テーブルを初期化します。", vbYesNoCancel) = 6 Then
DoCmd.SetWarnings False
DoCmd.RunSQL ("delete from 商品マスタ;")
DoCmd.RunSQL ("delete from カテゴリ ;")
DoCmd.RunSQL ("delete from カテゴリ関連 ;")
DoCmd.RunSQL ("delete from ブランド ;")
DoCmd.RunSQL ("delete from メーカー ;")
DoCmd.RunSQL ("delete from 商品マスタ ;")
DoCmd.RunSQL ("delete from 成分 ;")
DoCmd.RunSQL ("delete from 成分関連 ;")
DoCmd.RunSQL ("delete from 説明 ;")
MsgBox ("テーブル初期化完了")
Else
MsgBox ("取り消し")
End If
End Sub
Private Sub txtインポート_Click()
DoCmd.SetWarnings false 'シングルクォーテーションより右はメモです。 警告表示 True 非表示 False
DoCmd.TransferText acImportDelim, , "カテゴリ関連", "D:\okwave\カテゴリ関連.txt", True
DoCmd.TransferText acImportDelim, , "メーカー", "D:\okwave\メーカー.txt", True
DoCmd.TransferText acImportDelim, , "カテゴリ", "D:\okwave\カテゴリ.txt", True
DoCmd.TransferText acImportDelim, , "ブランド", "D:\okwave\ブランド.txt", True
DoCmd.TransferText acImportDelim, , "成分", "D:\okwave\成分.txt", True
DoCmd.TransferText acImportDelim, , "成分関連", "D:\okwave\成分関連.txt", True
DoCmd.TransferText acImportDelim, , "説明", "D:\okwave\説明.txt", True
DoCmd.TransferText acImportDelim, , "商品マスタ", "D:\okwave\商品マスタ.txt", True
DoCmd.SetWarnings True
MsgBox ("txtファイルインポート完了")
End Sub
Private Sub txtファイルエキスポート_Click()
DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\カテゴリ.txt", True
DoCmd.TransferText acExportDelim, , "カテゴリ関連", "D:\okwave\カテゴリ関連.txt", True
DoCmd.TransferText acExportDelim, , "ブランド", "D:\okwave\ブランド.txt", True
DoCmd.TransferText acExportDelim, , "メーカー", "D:\okwave\メーカー.txt", True
DoCmd.TransferText acExportDelim, , "商品マスタ", "D:\okwave\商品マスタ.txt", True
DoCmd.TransferText acExportDelim, , "成分", "D:\okwave\成分.txt", True
DoCmd.TransferText acExportDelim, , "成分関連", "D:\okwave\成分関連.txt", True
DoCmd.TransferText acExportDelim, , "説明", "D:\okwave\説明.txt", True

MsgBox ("D:\okwaveに新規作成しました")
End Sub
Private Sub 項目名_Click()
DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\項目名\カテゴリ.txt", True
DoCmd.TransferText acExportDelim, , "カテゴリ関連", "D:\okwave\項目名\カテゴリ関連.txt", True
DoCmd.TransferText acExportDelim, , "ブランド", "D:\okwave\項目名\ブランド.txt", True
DoCmd.TransferText acExportDelim, , "メーカー", "D:\okwave\項目名\メーカー.txt", True
DoCmd.TransferText acExportDelim, , "商品マスタ", "D:\okwave\項目名\商品マスタ.txt", True
DoCmd.TransferText acExportDelim, , "成分", "D:\okwave\項目名\成分.txt", True
DoCmd.TransferText acExportDelim, , "成分関連", "D:\okwave\項目名\成分関連.txt", True
DoCmd.TransferText acExportDelim, , "説明", "D:\okwave\項目名\説明.txt", True

MsgBox ("D:\okwave\項目名に新規作成しました")
End Sub

この回答への補足

回答ありがとうございます。

新しい添付画像は「質問No.8733543 Accessで縦に情報が展開されてるテーブルの処理」へ貼り付けることにしました。
http://okwave.jp/qa/q8733543.html

> テーブルの大分類をカテゴリコード(テキスト型)、中分類(テキスト型)、小分類(テキスト型)して下さい。
この後は、カテゴリコード同士をリレーションすればよいでしょうか。
その場合、カテゴリ関連∞:カテゴリ1 で設定されました。

新しいVBAに差し替えて実行してみたところ、途中まで動作完了しました。

4.の設定時、!マークで「これは新規ラベルで、コントロールに関連付けられていません。」と表示されました。
再起動後表示は消え、その他の操作は正常に作動し、

10.メニューを起動し【CSVファイルインポート】のラベルをクリックします。
クリックしても何も起こりませんでした。

9.での設定に何か不備があるのでしょうか…

補足日時:2014/09/10 15:31
    • good
    • 0

おはようございます



テキストファイルとテーブルの変換です
このテストはテーブルの初期化しますのでACCESSファイルをコピぺして
こちらでやります。

1.Dドライブありますね、ここへOKWAVEフォルダーを新規作成します。

2.さらにOKWAVE内に項目名フォルダを新規作成します。

3.受け取ったCSVファイルをOKWAVEフォルダへコピペします。

4.メニューに次の4つのラベルボックスを配置して下さい
  【項目名】、【CSVファイルインポート】、【CSVファイルエキスポート】、【テーブル初期化】
  ボックスのプロパティーのその他タグの名前がこれになっていることを確認下さい

5.項目名のクリックイベントを立ち上げてコーディング画面を表示し文末のコードをコピペします。

6.メニューを閉じて再起動し【テーブル初期化】をクリックします。

7.【項目名】をクリックします

8.項目名フォルダに列名のだけのファイルが出来てます。
  この列名をOKWAVEフォルダの対応するファイルの1行目に挿入します
  列名が対応しない列には適当な名前を入力します。

9. 8で追記した列名でテーブルのフィールドを追加します。

10.メニューを起動し【CSVファイルインポート】のラベルをクリックします。
  テーブルデザインに問題なければ1分以内に「CSVファイルインポート完了」と表示されます。
  同じ警告が10回以上続くようであれば強制終了して下さい

-----------------------------------------------------------------
Private Sub テーブル初期化_Click()
If MsgBox("全テーブルを初期化します。", vbYesNoCancel) = 6 Then
DoCmd.SetWarnings False
DoCmd.RunSQL ("delete from 商品マスタ;")
DoCmd.RunSQL ("delete from カテゴリ ;")
DoCmd.RunSQL ("delete from カテゴリ関連 ;")
DoCmd.RunSQL ("delete from ブランド ;")
DoCmd.RunSQL ("delete from メーカー ;")
DoCmd.RunSQL ("delete from 商品マスタ ;")
DoCmd.RunSQL ("delete from 成分 ;")
DoCmd.RunSQL ("delete from 成分関連 ;")
DoCmd.RunSQL ("delete from 説明 ;")
MsgBox ("テーブル初期化完了")
Else
MsgBox ("取り消し")
End If
End Sub
Private Sub CSVインポート_Click()
DoCmd.SetWarnings false 'シングルクォーテーションより右はメモです。 警告表示 True 非表示 False
DoCmd.TransferText acImportDelim, , "カテゴリ関連", "D:\okwave\カテゴリ関連.csv", True
DoCmd.TransferText acImportDelim, , "メーカー", "D:\okwave\メーカー.csv", True
DoCmd.TransferText acImportDelim, , "カテゴリ", "D:\okwave\カテゴリ.csv", True
DoCmd.TransferText acImportDelim, , "ブランド", "D:\okwave\ブランド.csv", True
DoCmd.TransferText acImportDelim, , "成分", "D:\okwave\成分.csv", True
DoCmd.TransferText acImportDelim, , "成分関連", "D:\okwave\成分関連.csv", True
DoCmd.TransferText acImportDelim, , "説明", "D:\okwave\説明.csv", True
DoCmd.TransferText acImportDelim, , "商品マスタ", "D:\okwave\商品マスタ.csv", True
DoCmd.SetWarnings True
MsgBox ("CSVファイルインポート完了")
End Sub
Private Sub CSVファイルエキスポート_Click()
DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\カテゴリ.csv", True
DoCmd.TransferText acExportDelim, , "カテゴリ関連", "D:\okwave\カテゴリ関連.csv", True
DoCmd.TransferText acExportDelim, , "ブランド", "D:\okwave\ブランド.csv", True
DoCmd.TransferText acExportDelim, , "メーカー", "D:\okwave\メーカー.csv", True
DoCmd.TransferText acExportDelim, , "商品マスタ", "D:\okwave\商品マスタ.csv", True
DoCmd.TransferText acExportDelim, , "成分", "D:\okwave\成分.csv", True
DoCmd.TransferText acExportDelim, , "成分関連", "D:\okwave\成分関連.csv", True
DoCmd.TransferText acExportDelim, , "説明", "D:\okwave\説明.csv", True

MsgBox ("D:\okwaveに新規作成しました")
End Sub
Private Sub 項目名_Click()
DoCmd.TransferText acExportDelim, , "カテゴリ", "D:\okwave\項目名\カテゴリ.csv", True
DoCmd.TransferText acExportDelim, , "カテゴリ関連", "D:\okwave\項目名\カテゴリ関連.csv", True
DoCmd.TransferText acExportDelim, , "ブランド", "D:\okwave\項目名\ブランド.csv", True
DoCmd.TransferText acExportDelim, , "メーカー", "D:\okwave\項目名\メーカー.csv", True
DoCmd.TransferText acExportDelim, , "商品マスタ", "D:\okwave\項目名\商品マスタ.csv", True
DoCmd.TransferText acExportDelim, , "成分", "D:\okwave\項目名\成分.csv", True
DoCmd.TransferText acExportDelim, , "成分関連", "D:\okwave\項目名\成分関連.csv", True
DoCmd.TransferText acExportDelim, , "説明", "D:\okwave\項目名\説明.csv", True

MsgBox ("D:\okwave\項目名に新規作成しました")
End Sub
    • good
    • 0

ほぼ解明できました。


次の2件補足願います。
1.商品マスタの成分コードは主成分コードの事ですね
_このテーブルには一つの成分しか入力出来ません

2.カテゴリ関連テーブルの大分類、中分類、小分類を合わせるとカテゴリーコードになりませんか
_テキストデータはタブ等で分かれていますか

3.成分関連テーブルは成分コードだけで主コードになりますか

改正したテーブルのリレーションシップを添付します。

この図から判断すると、商品説明と商品の成分表をテキスト形式にエキスポートしたものが目的物ではないでしょうか
このテキストデータは一つの商品複数の成分があるときはこの数の行になります。
これは最初に質問をされた時の課題ですが、名案が浮かびません。
新しい質問でお願いします。

大量のhogeデータは手の付けようがありません。

在庫情報はテーブルへ取り込みますか長文の項目の説明と成分説明はメモ形式に変更してください。
ルックアップで、大量のデータに絞り込み検索の仕掛けが必要ですね

横長ですのでどうなるか心配です
「関連がある複数のテキストファイルの扱い方」の回答画像11

この回答への補足

こんにちは。
遅くまでこの問題にお付き合いいただき申し訳ありません。

> 1.商品マスタの成分コードは主成分コードの事ですね
はい、商品マスタの成分コードは実は重要成分コードとなっておりましたが、他のテキストファイルに同じ名前が無かった為入力ミスか、過去の名前なのだと思っていたのですが、そういうことだったのですね!

そして、添付画像少々修正します。(添付直しが出来ず、削除されてしまいました…)
使わないからと省いてしまいましたが、商品マスタの「成分コード」と「親カテゴリコード」も赤太字です。

> 2.カテゴリ関連テーブルの大分類、中分類、小分類を合わせるとカテゴリーコードになりませんか
合わせてカテゴリコードを示すような他のテキストデータが無いのでなんとも言えませんが、テキストデータはタブで分かれています。

> 3.成分関連テーブルは成分コードだけで主コードになりますか
成分関連テーブルも、説明テーブル同様に縦に展開されている(1つの商品番号に複数の成分コード×レコード)為、主コードにはならないでしょうか。

> この図から判断すると、商品説明と商品の成分表をテキスト形式にエキスポートしたものが目的物ではないでしょうか
その通りです。他のものは力技で何とかなるのですが、その2つだけが縦にテーブル展開されている為、どう取り出せばよいのか分からずにいました。

> このテキストデータは一つの商品複数の成分があるときはこの数の行になります。
なるほど、作り自体がそういうものなのですね。

では、テーブル初期化の作業に移ってみますね。

その前に1つ質問なのですが、
VBAを見ると「カテゴリ関連.csv」となっているのですが、「カテゴリ関連.txt」はCSV形式に修正するべきでしょうか?
とりあえずそのまま動かしてみます。

補足日時:2014/09/10 11:44
    • good
    • 0

補足願います。



関連図のおかげで大要がわかりました。
カテゴリ関連の詳しい情報ありましたら補足願います。

1.カテゴリ関連の全てのフィールドは全てテキスト型ではないでしょうか
  他のテーブルとリレーションを組むには同じ形式である
2.カテゴリ関連の大分類コード、中分類コード、小大分類コードに関する説明
二つのテーブル間には複数のリレーションは出来ない 。

最新のリレーション図を添付します。
リレーション線は右から出たり左から出たりして見づらいですが相手の位置に近い方から出ます

出来れば各テーブル主キーの位置に注目下さい
  主キーに設定したフィールドは重複を許されません
  成分関連テーブルのように連続した複数のフィールドで主キーとすることができます。
「関連がある複数のテキストファイルの扱い方」の回答画像10

この回答への補足

回答ありがとうございます。

> 1.カテゴリ関連の全てのフィールドは全てテキスト型ではないでしょうか
はい、確認したら間違えていたようです。
全てテキスト型でした。

> 2.カテゴリ関連の大分類コード、中分類コード、小大分類コードに関する説明
関係してるのか判断できないのですがカテゴリは複雑で、まず下の例をご覧下さい。

【カテゴリ関連.txt】
大分類コード/中分類コード/小分類コード/成分コード
02/2323/123456/T4455

【カテゴリ.txt】
カテゴリコード/カテゴリ名/親カテゴリ/成分フラグ/階層
01/化粧品/01/0/1
0101/ファンデーション/01/0/2
010101/固形/01/0/3
T4455/ビタミンC/123456/1/4

▼カテゴリ.txtの各フィールドについての説明
・カテゴリコード
数字2桁→大分類コード
数字4桁→中分類コード
数字6桁→小分類コード
アルファベット始まり→成分コード

・親カテゴリ
カテゴリコードが属する親カテゴリコード。
例)中分類0101ファンデーションは大分類01の化粧品に属する。

・成分フラグ
「1」なら、カテゴリコードに入っているのは成分コードとする。

・階層
1→大分類コード
2→中分類コード
3→小分類コード
4→成分コード

このような複雑な条件が絡み合っているのと、カテゴリ情報だけは別の書式で頂いた物で間に合いましたので、実際は使用しておりません。

補足日時:2014/09/09 17:47
    • good
    • 0

リレーションシップの右半分です。


前回の左半分に重ねて関連図.PPTと見比べて下さい。

但し図中仕様テーブルと仕様内容テーブルは商品マスタと複数の成分レコード、複数の説明の複数のカテゴリレコードを結びつけるため追加したテーブルですので関連図.PPTにはなく直接1:Nといった表現で直接つながっている事と思います。

また成分関連.TXTは、商品マスタと成分が 1:Nのつながりを示す情報と思われます。
これを参考に仕様内容の成分コードにセットする事になります。

説明関連.TXTは商品コードが無いですが説明.TXT内に商品コードを含んでいるので大丈夫ですが

商品マスタとカテゴリをつなげる情報がありません。
商品マスタ.TXT内にカテゴリコードはありませんか?
「関連がある複数のテキストファイルの扱い方」の回答画像9

この回答への補足

こんにちは。
お返事が遅くなりまして申し訳ございません。

回答No.7の件になります。

> これらをふまえて、メニュー画面に日付関係のテキストボックスを配置し
> 次のコードをコード表示ツールから開いた画面にコピペして下さい。
コピペ後、フォームビューに戻ってみると、当初は基準日以外空欄だったのですが

基準日:[2014/09/08]
開始日付:[空欄]
終了日:[2014/09/30]
月初日:[2014/09/01]
月末日:[2014/09/30]

このようになり、商品登録コマンドボタンは押しても反応がなくなりました。

これは正常な挙動でしょうか?
やはり私が変なところへコードをコピペしてるのですよね…?

回答No.8、9に対してのお返事になります。
> ACCSESSの1:∞ の関係のテーブルをクエリでつないでCSVファイルにエキスポートするとこのように縦に展開されます。
そういうものだったのですね。

> 説明テーブルを配番で分類すると、項目と項目の説明が同じのものが並びます。
同じものしか現れないという事でしょうか?
同じでないものも並ぶので、申し訳ないのですが内容がいまいち理解できなかったです。

> この現象は説明テーブル、成分テーブルでも確認できます。
はい、実は成分テーブルも説明テーブル同様1つの商品に複数の成分が登録されている場合がある為同じように縦に展開されます。


その為に仕様と使用内容テーブルを追加する事によって複数のレコードでも参照できるようになるという事でしょうか?

Qに画像を添付しました。
関連会社から頂いた関連図.pptの必要部分を編集したものです。
恐らく主キーが赤太字、リレーションが線なのではと思っています。

関連会社からは、このようにカテゴリについて説明を受けています。
カテゴリ関連.txtは商品マスタ.txtの成分コードをキーに結び付けて導き出す
成分コード名はカテゴリ.txtと結びつけて導き出す

> 商品マスタとカテゴリをつなげる情報がありません。
> 商品マスタ.TXT内にカテゴリコードはありませんか?
カテゴリコードは成分コードと関連付け、成分コードは商品コードと関連付く事で導き出されるようです。
ちなみに、カテゴリ情報は必要ないのですが、成分コードが含まれていたので念の為書き出しました。

補足日時:2014/09/08 17:22
    • good
    • 0

▼困っているのは「説明.txt」データをAccessにインポートした時、下の例のように


縦に情報を展開している為、横1列に情報が並ばない事です。

ACCSESSの1:∞ の関係のテーブルをクエリでつないでCSVファイルにエキスポートするとこのように縦に展開されます。
説明テーブルを配番で分類すると、項目と項目の説明が同じのものが並びます。

この現象は説明テーブル、成分テーブルでも確認できます。

確認結果を補足願います。

>・関連図.ppt(「.txt」データの関連性を示した図(恐らく主キーと、リレーション)
  添付はこちらで想定したリレーションシップの左半分です。
  右半分は次の回答に添付します。合わせた図と関連図.PPTと見比べていただきます。
「関連がある複数のテキストファイルの扱い方」の回答画像8
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!