• ベストアンサー

Access2000 テーブルのデザインを変更したい

sghの回答

  • ベストアンサー
  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

こんにちは。 レスがつきませんね。 やりたいことは、何となくわかるのですが、現実的ではないと思います。 例えば「顧客番号(0001)」のレコード数が1000件あった場合、2000項目作ることになるからです。 レポートへの出力をお考えであれば、代案として、下記の結果レイアウトでクロス集計クエリを使えます。 ただし、顧客番号と項目名で重複がないことが前提です。 あまり参考にならなければごめんなさい。 <クエリ> フィールド 顧客番号  項目名   料金 テーブル  請求書   請求書   請求書 集計    グループ化 グループ化 最大 行列の入替 行見出し  列見出し  値 <結果> 顧客番号 商品A 商品B 0001  200  100 0002  200  (Null)

lequios
質問者

お礼

レスありがとうございました。 HDクラッシュのため、お礼が遅くなって申し訳ありません。 ちょっときつめですが、クエリーと手作業でなんとかやってみようと思います ご提案、どうもありがとうございました。

関連するQ&A

  • マスタテーブルの変更履歴について

    データベースについて質問させていただきます。 例えば、飲食店で発行されるレシートには以下が記載されています。 ・店舗名、電話番号、担当者名 ・購入した商品名、値段、会計 これらを後に会社の業務で画面にレシートのような情報を表示したり、データの分析に使う場合、データベースを作成すると思います。 そのデータベースとしては、 以下のようなものが必要だと、私は考えました。 ・店舗テーブル…属性:店舗コード、店名、電話番号、住所など ・従業員テーブル…属性:従業員ID、名前、所属の店舗コード ・顧客テーブル…顧客ID、顧客名、住所、電話番号 ・商品テーブル…属性:商品ID、商品名、単価 ・売上履歴テーブル…属性:購入履歴ID、商品ID、個数、購入日時、顧客ID、購入した店舗コード、従業員ID これらを踏まえて、以下の質問をさせていただきます。 ・マスタの更新や別途、変更履歴テーブルが必要なのか…商品テーブルは日々属性の情報が変更されると思います。例えば、不況によって、単価が変わるなど。これをマスタテーブルの単価だけ変更する対応だとすると、購入履歴テーブルは商品テーブルを利用するので、単価の変更前に購入した履歴も値段が変更されてしまいます。この対応策として、別途、商品マスタの履歴テーブルを作って購入日時などを元に正しい単価を判断するような感じで対応すると良いのでしょうか? ・テーブルの作成や検索の都度、毎回結合するのか…例えば、Aさんの購入履歴を画面に表示する場合、画面にAさんの名前を入力して検索ボタンを押すと、購入履歴テーブルから必要なレコードを取り出して、Aさんの購入履歴を画面に表示するイメージをしています。この際、購入履歴テーブルは、商品IDを元に商品テーブルと結合したり、他には顧客テーブルと従業員テーブルとも結合する必要があります。検索をする際は、毎回テーブル結合を行うのでしょうか?それならば、見にくいイメージがありますが、購入履歴テーブルの顧客IDを名前にしておいたり、従業員IDを従業員の名前にしておくと、テーブルの結合が必要なくて良いのではないでしょうか? 大変文章が長く、また、読みにくいもので申し訳ございません。 たくさんの回答、よろしくお願いいたします。

  • ACCESSで複数のテーブルで同じ内容の行を抽出

    いつもお世話になっておりあます。 ACCESSのクエリ作成でお聞きしたき件ありまして、 投稿させていただきました。 下記の様な商品購入テーブルA・Bで ・・・テーブル定義・・・ テーブルA 顧客ID 商品名 テーブルB 顧客ID 商品名 ・・・入力データ・・・ テーブルA 顧客ID 商品ID 0001  あめ 0002 コーラ 0003  せんべい テーブルB 顧客ID 商品ID 0001  おかし 0002 コーラ 0003  わたあめ ・・・・・・・・・・・ とのテーブルにて テーブルAとテーブルBの同じ状態の行 0002 コーラ を抽出するには、どのようなクエリを作成すればよろしいのでしょうか? 見当がつかず、こまっております。 どなたか、御対応いただけますと、ありがたいです。

  • Accessでサブフォームに任意の番号をつけるには

    お世話になっております。 アクセスで苦戦しております。ご教授願います。 業務管理で、得意先からの受注から請求書作成までをつくりたいのですが、納品した項目を顧客ごとに1ヶ月単位でまとめて請求をかけるとやりたいと思っています。 そのときに納品内容に請求番号と同じ番号を振りたいのですが、うまくいきません。 納品テーブル 受注ID 顧客名 内容    納品日  1   A社 テスト     5/1  2   B社 サンプル    5/3  3   A社 テスト2    5/2  4   B社 サンプル2   5/4 納品テーブルのデータを顧客名で抽出し、請求フォームのサブフォームに表示 請求フォーム 請求番号 0001   A社  5月度請求 ーーーーーーー以下サブフォームーーーーーーーー 受注ID 顧客名 内容   納品日  請求番号  1   A社 テスト    5/1 0001  3   A社 テスト2   5/2 0001 ーーーーーーーーーーーーーーーーーーーーーーー と、したい場合はどのようにすればよいのでしょうか。 説明が下手なので、補足があればいたします。 どうかよろしくお願いいたします。

  • 2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。

    2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。マージするときは、最新の売上日フィールドをもつレコードを取得します。環境はAccess2000です。どんなSQL文を作成すればいいのでしょうか?  また、テーブルAにしかないレコード、又はテーブルBにしかないレコードは、そのままテーブルCに追加したいです。 ※下記テーブルAとBは、Access内に存在します。テーブルCはAとBのマージ後の結果作成されるテーブルです。 テーブルA 顧客番号   売上日   商品名   備考    1  2000-01-01  ふでばこ   A    2  2000-02-02  鉛筆     A    3  2000-03-03  定規     A    4  2000-04-04  シャーペン  A   99  2000-09-09  パソコン   A テーブルB 顧客番号   売上日   商品名   備考    4  2001-04-04  シャーペン  B    2  2000-02-02  鉛筆     B    3  2001-03-03  定規     B    1  1999-01-01  ふでばこ   B  100  2005-11-11  ワープロ   B テーブルAとBを、最新の売上日の条件でレコードを取得し新しいテーブルCを作成する。 テーブルC 顧客番号   売上日   商品名   備考    1  2000-01-01  ふでばこ   A    2  2000-02-02  鉛筆     A    3  2001-03-03  定規     B    4  2000-04-04  シャーペン  A   99  2000-09-09  パソコン   A  100  2005-11-11  ワープロ   B SQL文で処理可能なのでしょうか?

  • エクセルVBAでの一括データ変更

    業務で顧客情報の簡易ツールをエクセルVBAで作成しています。 どなたか、いい案がある方、お教えください。 前提:2つのエクセルファイルを作成しています。 ファイルAは、顧客名、顧客担当者名、商品名、商品番号、契約期間などの一連のデータを持っており、DBファイルとして作成。 ファイルBは、検索・登録を行うユーザインターフェース。ユーザフォームにて各種作業をマクロ登録しています。 やりたい事:ファイルBのユーザフォームで、なにかしらのデータを検索し、その検索がヒットしたデータの内で、一括で変更したい項目の内容が全て同じならば一括でデータを変更、1つでも違ったら変更せずに終了。検索する内容は、時には顧客名であったり顧客担当者であったりと可変です。また、変更したい項目も同様に可変です。 私の今の所の案: (1)ファイルBにユーザーフォームで検索ツールでキーになる項目をファイルA上でオートフィルタで検索 (2)(1)の可視結果を新しいシートにコピー (3)(2)のシートで変更したい項目をキーにアドバンスドフィルタ (4)データが全て同じなら、再度(2)を行い、変更したい項目を一括で置換 作業が複雑でこのやり方でVBAが組めるかわかりません。 どなたか、アドバイスのある方教えてください。

  • Access、同じテーブルの2つの項目対他のテーブルで1つの項目のリレーションは可能?

    Accessで販売管理をしています。 以下のテーブルを作成し(*は主キーです)、 [売上T]  [商品M]  [顧客M]  [受注T] *売上NO  *商品ID  *顧客ID1  *受注NO 商品ID   商品名    *顧客ID2  商品ID 日付    顧客ID1     顧客名    受注日 金額    顧客ID2            受注金額        受注先1        受注先2 参照整合性にチェックを入れリレーションでつないでいます。 リレーションシップは下記のとおりです。 [売上T]商品ID―[商品M]商品ID―[受注T]商品ID [商品M]顧客ID1及び2―[顧客M]顧客ID1及び2―[商品M]受注先1及び2 ここで顧客と受注先が重複することもあるので、顧客Mから顧客ID及び受注先IDの2つのテーブルにリレーションシップを設定しているのですが、 クエリで  [受注T]受注NO及び受注金額、[顧客M]顧客名で抽出したところ、 5000件以上[受注T]にデータがあるはずのものが、1200件ほどしか抽出できませんでした。 ちなみに[顧客M]と[受注用顧客M]というまったく別のテーブルを作成し、 [商品M]受注先1及び2―[受注用顧客M]顧客ID1及び2 とリレーションを作成し、クエリで抽出するとうまくいきました。 しかしこの方法だと、[顧客M]と[受注用顧客M]という2つのテーブルを管理しなければならなくなるので面倒です。 そこで質問です。 同じテーブルの2つの項目対他のテーブルの1つの項目とでは、うまくリレーションが設定できないのでしょうか。 もし出来ない場合、[顧客M]と[受注用顧客M]の2つのテーブルを管理しなければならない訳ですが、 なんとか簡単に管理できる方法(ひとつのテーブルを変更すると簡単にもうひとつが変更できる設定)はないでしょうか。 非常にわかりにくく長い文章で申し訳ありません。 VBA等はさっぱりわかりませんので、普通の設定の範囲内で、できるかどうかよろしくお願いします。

  • ACCESS2000 テーブルの更新方法

    テーブルAがデータベース(商品番号、単価)が入力されています。 テーブルBが入庫されたデータ(オーダー番号、商品番号、個数)が入力されてます。 クエリで 入庫されオーダー番号を入力すると、テーブルBから入荷した商品番号、個数、テーブルAから単価が表示されるようになっています。 商品番号でリンクさせている状態です。 そこで単価に変更があった場合、この時点でテーブルAの単価を上書き訂正したいのですが、入力できませんでした。 何かよい方法はありますか?アクセスはじめたばかりでよくわかりませんが、よろしくお願いします。

  • ACCESS テーブルの正規化

    EXCELデータで以下のような正規化されていない項目のデータをACCESSに取り込んで顧客毎に商品の数量を計算するクエリを使用しています。 顧客ID|顧客名|商品名1|商品名2| ・・・・・・・ XXXXX ○○○       2      3  ・・・・・・・ XXXXX ○○○       2      3  ・・・・・・・・ XXXXX ○○○       2      3  ・・・・・・・・ 商品名が可変で追加されたり、削除されたりするのですが、今までは集計の都度クエリを作成していたため問題はありませんでしたが、今回クエリからレポートとフォームを作成するように指示がありました。自分が集計の都度クエリを作成出来ない環境になったため、事前にクエリを組んでフォーム、レポートを作っておきたいのですが、可変な項目名の集計クエリを作成する方法はあるでしょうか? 私のイメージでは 顧客ID|顧客名|商品名 数量 XXXXX ○○○  商品1  2 XXXXX ○○○  商品2  1 XXXXX ○○○  商品3  3 このように正規化出来ればよいと思います。 ACCESSにはテーブルの正規化機能がありますが、操作方法を読んでみるとやはり事前に項目を指定して作成するように読み取れました(間違っているかもしれませんが) 何か良い方法があれば教えてください。 EXCELのVBAは多少書けるのですが、ACCESS VBAはあまり得意ではありません。 自分でメンテナンス出来るように、出来ればクエリで作成したいのですが無理でしょうか? よろしくお願いします。

  • Access マスターテーブル

    Accessについて。 テーブル1がID(主キー)、注文日、商品番号、納期など入力欄の項目で、テーブル2が商品番号(主キー)、商品名で商品のマスターテーブルになっています。 商品番号を入力すれば商品名が表示されるようにクエリを作成し、そのクエリからフォームを作っています。 ここまでは良いのですが、新しい商品番号を入力したときに限りフォームから商品名も入力する事でマスターテーブルに登録されるようにしたいのですが、どうすれば良いでしょうか?

  • [Access]別テーブルの最大値以降の連番振り

    過去の質問を色々調べたのですが、結局以下の連番の振り方が分からず・・・困っています。 どなたか助けて下さい。お願いいたします。 テーブルA(蓄積されている過去テーブル) 伝票番号  顧客NO  注文日 001 111111 2012/11/10 001 111111 2012/11/10 002 222222 2012/11/25 002 222222 2012/11/25 002 222222 2012/11/25 003 333333 2012/12/31 テーブルB(新規にインポートするテーブル) 004 444444 2013/02/01 004 444444 2013/02/01 005 222222 2013/02/15 005 222222 2013/02/15 006 555555 2013/02/15 006 555555 2013/02/15 上記のように、テーブルBをインポートした時に、伝票番号を「004,004,005・・・」という風に 顧客NO毎に連番を振りたいです。 DmaxやDcount関数を使う事はなんとなく分かったのですが、うまくいきません。 出来れば、クエリで実現したいと思ってます。 テーブルAにある顧客がテーブルBに出てきたとしても、関係なく連番が振れれば問題無いので、 テーブルAからは最大値+1の値だけ取れればいいです。 宜しくお願いいたします!!