• 締切済み

関連がある複数のテキストファイルの扱い方

8月7日の質問No.8708191「Accessクロス集計で列数が多い場合の処理方法」ですが一部、未解決となります。 ですので、一旦その質問は締切りまして、再度内容を吟味して質問させていただきます。 関連会社から商品情報(十万件以上)に関する複数の「.txt」ファイルを頂きました。 この「.txt」ファイルには、商品に関する情報が記載されており、それぞれが関連し合ったファイルです。 これらを適切に関連を持たせ、最終的にはアップロード用に「.csv」として出力させたい為、内容が横1行に吐き出されるようにしたいです。 初歩的な質問になりますが教えてください。 作業環境はWindows7にExcel2003、Access2003がインストールされていますが、そのどちらも素人程度にしか扱えない状況です。 「.txt」の主情報(商品マスタ)は十万行以上になります。 金銭的なバックアップは見込めませんが、無料ソフトの導入などは問題ないです。 また、私以上に素人がこの処理をするかもしれない場合、どのような方法でアップロード用の情報にするのが良いでしょうか?

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

  • chayamati
  • ベストアンサー率41% (255/611)
回答No.17

すみません。文末のコードです 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\テキストに新規作成しました")

lotus2014
質問者

補足

回答ありがとうございます。 恐らくですが、VBAの最後尾のEnd Subが足りなかったようなので、付け加え7まで順調に進みました。 7.の「但し成分関連.TXTは 成分中継へコピペ」は、カテゴリの事だと思いましたので カテゴリ関連.txtをカテゴリ中継へコピペしました。 D:\okwave\テキスト\テキストカテゴリ関連.txtには、何も貼り付けない状態でよいのでしょうか? そしてまた8.の【TXTファイルインポート】で何も起こりませんでした… VBAの貼り付け場所が適切でないのかも?(私がいまいち理解していない為です;) 念の為、記述した時の状況をお伝えします。 以前同様、項目名のクリックイベントを立ち上げてコーディング画面にVBAをコピペしました。 左側のオブジェクトに「項目名」、右側のイベントに「Click」となっており、 画面最上部に「Option Compare Database」と入っています。 その下に記述していただきましたVBAを入力しています。 こうしてインターネットを通してのやりとりだからこそ気づかないだけであって きっと、原因はなんてことない事なのかもしれません。 それなのに毎度の事ながら懇切丁寧に教えてくださってありがとうございます。 私ではたいした解決にはならないと思いますが、明日またいじって検証してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.16

テストお願いします。 1.ラベルの表示とラベル名の変更  CSVファイルインポート⇒TXTファイルインポート  CSVファイルエキスポート⇒TXTファイルエキスポート 2.テーブル追加とフィールド名確認  カテゴリ関連フィールド項目が3つに分かれているためテキストデータを  直接テーブルに取り込むことができません。一旦テキストデータ列と同じの  中継テーブルに取り込み、これをカテゴリテーブルに移します  カテゴリ関連   成分コード(テキスト形式)   カテゴリコード(テキスト形式)  カテゴリ中継   成分コード(テキスト形式)   大分類コード(テキスト形式)   中分類コード(テキスト形式)   小分類コード(テキスト形式)   商品マスタ   商品コード 商品名 メーカコード   ブランドコード   重要成分コード   販売価格   廃番フラグ   更新日 3.D:ドライブにフォルダを追加  D:\OKWAVE  D:\OKWAVE\テキスト 4.文末のコードを差し替え 5.メニューを再起動  【テーブルブル初期化】のラベルをクリック  【TXTファイルエキスポート】のラベルをクリック 6.添付を参考にして、リレーションの再設定 7.客先よりのテキストデータをD:OKWAVE\テキストのファイルにコピペ  但し成分関連.TXTは 成分中継へコピペ 8.メニューの【TXTファイルインポート】のラベルをクリック

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.15

>回答No.1のお礼欄で提示しましたフィールドの順番と、実際の各「.txt」(関連会社から頂いたままの不要な部分が入った)のフィールドの順番とでずれてしまったためでしょうか?  フィールドの順は影響しません。テーブル間に1:∞のリレーション1側のテーブルからやります。  このかかわりとカテゴリ関連で、まずリレーションシップを全て除去して単体でのインポートから始めます。  フィールドの並び順は、ウィザードでフォームフォームを作成した時の配置の順番です。  またデータ入力時の順もこれで決まります。配置も入力順もフォーム上で修正可能です。  関連図見直しています。赤字がキーポイントのようですね。  商品マスタ内の大分類コードもカテゴリ関連の大分類コードも成分コードと同種の意味付けのようですね  今回の処理に関係ないですがこの情報も先方はお持ちのようですね 尚横並びについては NotFound404様 30246kiku様が対処下さっているようで、こちらでの解決が望めますね

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.14

>の設定時、!マークで「これは新規ラベルで、コントロールに関連付けられていません。」と表示されました。 そうですね、CSVとTXT差し替えたためラベルのイベント設定と、コードの対応が狂ったことが第一です。 次にテーブルにインポートする順番の再考が必要です、これにカテゴリ関連が絡んでいます。 落ち着いて見直ししてみます。

lotus2014
質問者

補足

回答ありがとうございます。 > そうですね、CSVとTXT差し替えたためラベルのイベント設定と、コードの対応が狂ったことが第一です。 拡張子.txtのVBAを差し替える前の段階でラベルを設定しました。 一度削除して、設定し直した方がよろしいでしょうか。 > 次にテーブルにインポートする順番の再考が必要です、これにカテゴリ関連が絡んでいます。 回答No.1のお礼欄で提示しましたフィールドの順番と、実際の各「.txt」(関連会社から頂いたままの不要な部分が入った)のフィールドの順番とでずれてしまったためでしょうか? お手数おかけ致します><

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.13

> 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

lotus2014
質問者

補足

回答ありがとうございます。 新しい添付画像は「質問No.8733543 Accessで縦に情報が展開されてるテーブルの処理」へ貼り付けることにしました。 http://okwave.jp/qa/q8733543.html > テーブルの大分類をカテゴリコード(テキスト型)、中分類(テキスト型)、小分類(テキスト型)して下さい。 この後は、カテゴリコード同士をリレーションすればよいでしょうか。 その場合、カテゴリ関連∞:カテゴリ1 で設定されました。 新しいVBAに差し替えて実行してみたところ、途中まで動作完了しました。 4.の設定時、!マークで「これは新規ラベルで、コントロールに関連付けられていません。」と表示されました。 再起動後表示は消え、その他の操作は正常に作動し、 10.メニューを起動し【CSVファイルインポート】のラベルをクリックします。 クリックしても何も起こりませんでした。 9.での設定に何か不備があるのでしょうか…

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.12

おはようございます テキストファイルとテーブルの変換です このテストはテーブルの初期化しますので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

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.11

ほぼ解明できました。 次の2件補足願います。 1.商品マスタの成分コードは主成分コードの事ですね _このテーブルには一つの成分しか入力出来ません 2.カテゴリ関連テーブルの大分類、中分類、小分類を合わせるとカテゴリーコードになりませんか _テキストデータはタブ等で分かれていますか 3.成分関連テーブルは成分コードだけで主コードになりますか 改正したテーブルのリレーションシップを添付します。 この図から判断すると、商品説明と商品の成分表をテキスト形式にエキスポートしたものが目的物ではないでしょうか このテキストデータは一つの商品複数の成分があるときはこの数の行になります。 これは最初に質問をされた時の課題ですが、名案が浮かびません。 新しい質問でお願いします。 大量のhogeデータは手の付けようがありません。 在庫情報はテーブルへ取り込みますか長文の項目の説明と成分説明はメモ形式に変更してください。 ルックアップで、大量のデータに絞り込み検索の仕掛けが必要ですね 横長ですのでどうなるか心配です

lotus2014
質問者

補足

こんにちは。 遅くまでこの問題にお付き合いいただき申し訳ありません。 > 1.商品マスタの成分コードは主成分コードの事ですね はい、商品マスタの成分コードは実は重要成分コードとなっておりましたが、他のテキストファイルに同じ名前が無かった為入力ミスか、過去の名前なのだと思っていたのですが、そういうことだったのですね! そして、添付画像少々修正します。(添付直しが出来ず、削除されてしまいました…) 使わないからと省いてしまいましたが、商品マスタの「成分コード」と「親カテゴリコード」も赤太字です。 > 2.カテゴリ関連テーブルの大分類、中分類、小分類を合わせるとカテゴリーコードになりませんか 合わせてカテゴリコードを示すような他のテキストデータが無いのでなんとも言えませんが、テキストデータはタブで分かれています。 > 3.成分関連テーブルは成分コードだけで主コードになりますか 成分関連テーブルも、説明テーブル同様に縦に展開されている(1つの商品番号に複数の成分コード×レコード)為、主コードにはならないでしょうか。 > この図から判断すると、商品説明と商品の成分表をテキスト形式にエキスポートしたものが目的物ではないでしょうか その通りです。他のものは力技で何とかなるのですが、その2つだけが縦にテーブル展開されている為、どう取り出せばよいのか分からずにいました。 > このテキストデータは一つの商品複数の成分があるときはこの数の行になります。 なるほど、作り自体がそういうものなのですね。 では、テーブル初期化の作業に移ってみますね。 その前に1つ質問なのですが、 VBAを見ると「カテゴリ関連.csv」となっているのですが、「カテゴリ関連.txt」はCSV形式に修正するべきでしょうか? とりあえずそのまま動かしてみます。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.10

補足願います。 関連図のおかげで大要がわかりました。 カテゴリ関連の詳しい情報ありましたら補足願います。 1.カテゴリ関連の全てのフィールドは全てテキスト型ではないでしょうか   他のテーブルとリレーションを組むには同じ形式である 2.カテゴリ関連の大分類コード、中分類コード、小大分類コードに関する説明 二つのテーブル間には複数のリレーションは出来ない 。 最新のリレーション図を添付します。 リレーション線は右から出たり左から出たりして見づらいですが相手の位置に近い方から出ます 出来れば各テーブル主キーの位置に注目下さい   主キーに設定したフィールドは重複を許されません   成分関連テーブルのように連続した複数のフィールドで主キーとすることができます。

lotus2014
質問者

補足

回答ありがとうございます。 > 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→成分コード このような複雑な条件が絡み合っているのと、カテゴリ情報だけは別の書式で頂いた物で間に合いましたので、実際は使用しておりません。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.9

リレーションシップの右半分です。 前回の左半分に重ねて関連図.PPTと見比べて下さい。 但し図中仕様テーブルと仕様内容テーブルは商品マスタと複数の成分レコード、複数の説明の複数のカテゴリレコードを結びつけるため追加したテーブルですので関連図.PPTにはなく直接1:Nといった表現で直接つながっている事と思います。 また成分関連.TXTは、商品マスタと成分が 1:Nのつながりを示す情報と思われます。 これを参考に仕様内容の成分コードにセットする事になります。 説明関連.TXTは商品コードが無いですが説明.TXT内に商品コードを含んでいるので大丈夫ですが 商品マスタとカテゴリをつなげる情報がありません。 商品マスタ.TXT内にカテゴリコードはありませんか?

lotus2014
質問者

補足

こんにちは。 お返事が遅くなりまして申し訳ございません。 回答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内にカテゴリコードはありませんか? カテゴリコードは成分コードと関連付け、成分コードは商品コードと関連付く事で導き出されるようです。 ちなみに、カテゴリ情報は必要ないのですが、成分コードが含まれていたので念の為書き出しました。

全文を見る
すると、全ての回答が全文表示されます。
  • chayamati
  • ベストアンサー率41% (255/611)
回答No.8

▼困っているのは「説明.txt」データをAccessにインポートした時、下の例のように 縦に情報を展開している為、横1列に情報が並ばない事です。 ACCSESSの1:∞ の関係のテーブルをクエリでつないでCSVファイルにエキスポートするとこのように縦に展開されます。 説明テーブルを配番で分類すると、項目と項目の説明が同じのものが並びます。 この現象は説明テーブル、成分テーブルでも確認できます。 確認結果を補足願います。 >・関連図.ppt(「.txt」データの関連性を示した図(恐らく主キーと、リレーション)   添付はこちらで想定したリレーションシップの左半分です。   右半分は次の回答に添付します。合わせた図と関連図.PPTと見比べていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数のテキストファイルを1つにまとめる

    同一フォルダ内にある複数のテキストファイルの内容を1つにまとめる方法を探しております。 例えば、 a.txt, b.txt, c.txt が同一フォルダにあり、 それぞれの内容が AAA BBB CCC である時に、これらをまとめて matome.txtとして、その内容が AAA BBB CCC となるようなプログラムを書きたいのですが、どの様な方法が考えられますでしょうか。 上の例では3つのテキストファイルですが、実際に処理したいファイルは数百個になる為、一つ一つファイル名を入力する作業が大変で困っております。 同一フォルダ内のファイルをファイル名順に一度に読み込み、まとめる方法がありましたらお教え下さい。

  • バッチファイルで複数のテキストファイルの置換

    バッチファイルで以下のような処理を行うことはできないでしょうか? フォルダ1以下の全てのテキストファイル内の abcde という文字列を あいうえお に置換して、上書き保存ではなく 元のファイル名+(編集済み).txt というファイル名で同じ場所に保存できないでしょうか。 バッチファイルで出来ない場合他の物でも構いません。 ――――――――――――――――――――――――――――― 処理前 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │   ├フォルダ3   │  └フォルダ4   │     └ファイル2.txt (内容:abcde123abcde123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― ↓ ――――――――――――――――――――――――――――― 処理後 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │  └ファイル1(編集済).txt (内容:123あいうえお)   │   ├フォルダ3   │  └フォルダ4   │     ├ファイル2.txt (内容:abcde123abcde123)   │     └ファイル2(編集済).txt (内容:あいうえお123あいうえお123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― こんな感じで出来ないでしょうか。 よろしくお願いします。

  • 沢山のテキストファイルを一つに

    下のように、Testフォルダに Area1、Area2・・・とフォルダがあり、 その中に、Sample.txtがあります。 C:\Test\Area1\Sample.txt C:\Test\Area2\Sample.txt C:\Test\Area3\Sample.txt ・ ・ ・ C:\Test\Area30\Sample.txt それぞのフォルダのSample.txtは "1234567890.123" "2345678901.234" "3456789012.345" . . . のように、数桁の数字が数百行並んでいます。 例えば、 Area1\Sample.txt に100行、 Area2\Sample.txt に200行、 Area3\Sample.txt に150行あるとします。 これを、 1~100行にArea1\Sample.txtの内容を、 101~300行にArea2\Sample.txtの内容を、 301~450行にArea3\Sample.txtの内容を、 として、Area30までのSample.txtを並べた 一つのテイストファイルに書き直したいのですが、 何しろ沢山あるので、一つ一つ開いてコピぺでは、 書き落としなども心配ですし、毎回大変時間が掛かります。 簡単に並べて書き出す方法はないでしょうか。 Excel等を使ってできないでしょうか。 宜しくお願いします。

  • バッチファイルでテキストファイルを分割したい

    テキストファイルを、指定した数値の倍数の行を、指定した個数に分割するバッチファイルを作成しようとしています。 例えば、以下の様な内容の「in.txt」というテキストファイルを3分割したい場合、 ----- in.txtの内容 ----- 1 2 3 4 5 6 7 8 9 10 ------------------------ 以下の様な内容で、 「out1.txt」「out2.txt」「out3.txt」として出力したいのです。 ----- out1.txtの内容 ----- 1 4 7 10 -------------------------- ----- out2.txtの内容 ----- 2 5 8 -------------------------- ----- out3.txtの内容 ----- 3 6 9 -------------------------- 自分はプログラミングの知識がないので、WEBに書かれている構文を少し書き換えたりして試しているのですが、うまく行きません。 AWKを使い、以下のようなバッチファイルを作成して実行してみましたが、「out3.txt」だけがうまく行きませんでした。構文の意味も分からないので修正も出来ません。 awk "NR%%3==1" "in.txt" > "out1.txt" awk "NR%%3==2" "in.txt" > "out2.txt" awk "NR%%3==3" "in.txt" > "out3.txt" AWKの解説ページを読み始めたのですが、時間的な猶予があまり無く、今回質問させて頂いた処理が出来るようになるまでまだ時間が掛かりそうなので、どなたかお分かりの方がおられましたお教え頂けないでしょうか。 AWKでなくとも、sedでもPerlでもその他のコマンドでも構いませんし、スクリプトファイルを読み込めるコマンドでしたらスクリプトでの書き方でも結構ですので、ご存知の方がおられましたらお教え頂けないでしょうか。

  • 複数テキストを一行ずつファイル名を付けて結合する方法

    複数テキストを一行ずつファイル名を付けて結合する方法 フォルダにある複数のテキストデータを1つのテキストデータに結合する際、テキスト1行毎の先頭にファイル名を付けたいのですが。具体的には以下の通りです。 最終的にはexcelに取込み処理するので、excelのマクロかDOS系でできるとあり難いです。 [file1.txt] 1111111111 2222 33333333 [file2.txt] 123 1234 ↓ [all.txt] file1.txt 1111111111 file1.txt 2222 file1.txt 33333333 file2.txt 123 file2.txt 1234

  • テキストファイルを一つにまとめる

    一つののフォルダ内に複数のテキストファイルがあります a.txt b.txt c.txt があり内容はそれぞれ 日付 商品名 数量と同一項目にしてあります これを同じフォルダに自動で一つのファイルにまとめる方法はありませんか 超初心者です よろしくお願いします

  • Excel VBAで列ごとのデータをテキストファイルへ書くには?

    エクセルのシート(たとえばSheet1)が以下のようになっているとします。 A B C D E F 1 商品A 11111111 あいうえお 3 1000 2 商品B 22222222 かくくけこ 1 2500 3 商品C 33333333 さしすせそ 2 3500 ・ ・ これを決まった列ごとにテキストファイル(固定ファイル名)に書き出すということは、エクセルのVBAで可能でしょうか? テキストファイルの内容は以下のようにしたいのです。 E列を数量として、その分だけのテキスト行を書き出したいのですが… <<bbb.txt>> 商品A 商品A 商品A 商品B 商品C 商品C ・ ・ <<ccc.txt>> 11111111 11111111 11111111 22222222 33333333 33333333 ・ ・ <<fff.txt>> 1000 1000 1000 2500 3500 3500 ・ ・ また、このようなことが参考になるHPがあればお教え願いたいのですが。 以上よろしくお願いします。

  • テキストファイルを1行ずつ別のファイルに分割する

    400行ぐらいのテキストファイルを、1行ずつ別のファイルに分割したいと思います。 ファイル名は**001.txtのように、(**は任意の文字列、数字は連番)なってくれれば嬉しいです。 どなたかこのような処理のできる簡単な方法をご存じないでしょうか? よろしくお願いします。

  • エクセルの各シートに複数のtxtファイルを取り込む

    Excel2013を用いたデータ整理をしているのですが,複数のファイルを扱う上でマクロを用いた効率化をしたいと思い,質問させていただきました. いま,Folder1 というフォルダに,text1 から text40 までの 40個のtxtファイルがあります. これらのファイルを,エクセル上であらかじめ作成してある Sheet1 から Sheet40 にそれぞれ貼り付けたいと考えています. txtファイルは,4列で構成されており,タブでそれぞれ区切られています. 行数は20,481行です. txtの中には,0 の値が入った箇所もあるため,その情報が消えないで貼り付けられると望ましいです. また,タブのところでしっかり区切られ,違うセルに貼り付けられると,ありがたいです. 質問は以上です. お手数ですが,よろしくお願いします.

  • 外部テキストファイルの書き換えと作成について

    外部テキストファイルの操作について悩んでおります。 アドバイスお願いします。 まず、外部テキストファイルdate.txtファイルの中身は以下のような具合です。 2/19 2/18 2/09 2/14 2/17 というたった五行の日付情報です。 この日付情報をユーザーがhtml上(実際はdate.phpというファイルです)で自由に変更できるようにしたいというのが私の処理の理想です。 そこで、この日付情報のそれぞれをhtmlのinput type=textのvalue値として、まず読み込ませて表示させます。 そしてユーザーは5つそれぞれを書き換え、もしくはそのまま変更なしでもかまいませんが、最終的にsubmitでphpに送信します。(自分自身、date.phpに送信します。) そのあと、date.txtファイルがユーザーの指定通りに書き換えられるという仕組みです。 さらに、その書き換えられた際に、date.txtファイルとは別に、updated.txtファイルを生成したいと思っています。(生成というか、常にdate.txtファイルの中身が変更される際に、updated.txtファイルも変更されるようにしたいということです。) そのupdated.txtファイルの中身は、 v_hensu1=2/19&v_hensu2=2/17&v_hensu3=2/14&v_hensu4=2/17&v_hensu5=2/15 というようにしたいと思っています。改行は必要ありません。 date.txtの日付情報を上からそれぞれv_hensu1、v_hensu2に当てはめていって、それぞれを&でつなぐだけです。 以上で処理の流れは完了です。 そこでわからないのは、「最初にdate.txtファイルを開く際に使う関数」と、 次に「date.txtを書き換える際に使う関数」と、 「updated.txtを作るための関数」です。 ファイル操作について、また簡単な例をあげていただけますと幸いです。どうぞ宜しくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう