- ベストアンサー
ACCESSでテーブル内の名称変更して変更前のデーターを反映させたい
ACCESS初心者の者です。得意先との取引をACCESSで作成してるのですが、得意先が名称変更になり、得意先テーブルで名称を変更したいのですが、名称を変更するだけではなく、旧名でのデーターを新しい名称で反映させたいのですが、こういった事は可能でしょうか? テーブルでの直接変更や置換をしましたが無理でした。月ごとと2ヶ月にまたがったデーターが必要なのです。作成者がもういないのでどうしたらいいものか困っています。言葉足らずかも知れませんが宜しくお願いいたします。 OS:WINXP SOFT:ACCESS2000
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ひとまず作業開始前にバックアップ(MDBファイルをコピー)してください。 憶測ですがキーによる管理は行われていないと思います。 データベース未経験でBASICやCOBOLしか知らない人は、ACCESSでもBASICやCOBOLのようなコーディングをする事があります。 その場合、主キーさえ設定しない事があります。 今回の事例はこれに当てはまるのではないでしょうか。 (そうでなければ得意先名を更新できないで困る事は無いと思います。) そうであると仮定すると下記の作業で何とかなると思います。 (ただしこれは対処療法的な処置です。今後同じようなパターンが発生する前に正規化の考え方を盛り込んだシステムに書き換えた方が良いでしょう。) 得意先フィールドを持つ各テーブルに対して更新クエリをつくる 1.最初に選択クエリを作成する 2.得意先フィールドがA社のものを抽出できるように設定する 3.選択クエリを更新クエリに変える 4.得意先フィールドをC社に更新するように設定する 5.クエリの実行ボタンを押す ここまでで、データの更新が出来ます。 細かい手順までは文で書くのが難しいので、入門書などでクエリの使い方を調べてください。 続いて、クエリやマクロ、VBAに含まれている「A社」という記述を全て「C社」に変える必要があります。 VBAはプロジェクト全体を対象に置き換えを行えば大丈夫なはずです。 クエリやマクロはそれぞれのエディタで1個づつ調べるしかないでしょう。 ただし、実際の構造がハッキリしないため本当にこれでいいのか自信はありません。 とにかくバックアップを忘れないように。
その他の回答 (4)
- O_cyan
- ベストアンサー率59% (745/1260)
>キーとはテーブルでのナンバーのことでしょうか? 主キーの事です。得意先テーブルにある得意先IDとか得意先コードとかで使用しているキーの事です。 通常ですと例えば得意先テーブルに得意先IDと得意先名があり売上等のテーブルには売上げた商品の詳細とどこに売ったかを判断するキーとして得意先IDか得意先IDと得意先名があるはずです。その得意先IDをキーとして集計や抽出をすれば良いという事です。 参照整合性を取っていなければ得意先テーブルのA社をC社に変更しても以前のレコードは旧社名のA社のままですから得意先テーブルのA社をC社に変更し同じ得意先IDを使用していればクエリ等で抽出する際に得意先IDで抽出すれば同一の得意先IDで得意先名がA社とC社を抽出できます。 この様にすれば旧社名のA社の時のレコードも名称変更前と変更後のレコードとして使えます。
お礼
色々と細かい説明どうもありがとうございます。 アドバイスと本を見ながら何とか変更することが出来ました。 本当に助かりました。
- monmon3
- ベストアンサー率83% (10/12)
ひとまずテーブルの様子を書いてもらうしかないと思います。 例) ------------------- 得意先マスタ 得意先名称 売上げデータ 日付 得意先名称 金額 得意先マスタの得意先名称を変えたが売上データの得意先名称が変わらない ------------------- 等々。 そしてそれが、 ・クエリに入っているのか? ・テーブルに入っているのか? が分かればアドバイスのしようもあると思います。 ここからは憶測なんですけど ------------------- コボルとかBASICしかやった事がない人が作りがちなパターンだと・・・。 得意先マスタ A社 :データはA社への売上げなど B社 : 〃 B社 〃 X社 : 〃 X社 〃 売上データ 売上げ日付 得意先名称 売上げ金額 こんな感じで「得意先マスタ」のフィールド名「A社」を「C社」に変えたけど売上データは変わらないとかそういう事なんじゃないでしょうかね? -------------------
補足
回答ありがとうございます。 まさにmonmon3さんのおしゃっる通りです。 様子ですが、 得意先テーブルにA社・B社・・ その他、担当者テーブル等ありまして クエリ・フォーム・レポート(得意先、月別等に印刷)などに入っております。 説明自体うまくできずにすみません、宜しくお願いします。
- O_cyan
- ベストアンサー率59% (745/1260)
>旧名でのデーターを新しい名称で反映させたい A社にキーがあるはずなので社名ではなくそのキーを使い名称変更後のC社も同一キーを使っていればキーで抽出等行えば旧社名を残したまま反映させることは可能です。 >テーブルでの直接変更や置換をしましたが無理でした どのように無理だったのか分かりませんが・・。 得意先テーブルのA社と使用したいレコード間にリレーションがあって参照整合性を取っているとA社をC社に変更すると他のリレーションしてあるテーブルのデータもC社に変更されてしまうという事であればリレーションシップの参照整合性のチェックを外せばそれ以降はA社をC社に変更しても以前のレコードはA社のままでこれから入力するレコードはC社で入力できます。 質問の内容と違うようでしたらゴメンなさい。
補足
回答どうもありがとうございます。 知識不足を痛感しています。本やヘルプを見て一度やってみます。 キーとはテーブルでのナンバーのことでしょうか? すみません。名称変更してもキーで抽出条件を設定すれば良いのでしょうか?
- monmon3
- ベストアンサー率83% (10/12)
ひとまず、更新クエリを使えば状況を打破できると思います。使い方などについては、ヘルプを見る等して対応してください。 (テーブル名やフィールド名が不明なので説明のしようが無いです。) また、今後そのシステムを管理していくのであれば、「正規化」というキーワードを元にデータベース設計を少々学習なさり、データベースを改良される事をお勧めします。
補足
早速の回答どうもありがとうございます。 説明不足で申し訳ありませんでした。 私自身アクセスの事をよく理解していないのですが、 まず、テーブル名が得意先テーブルでフィールドがA社、B社とありまして、A社がC社という名前に変更になったのでC社と変更したいのとC社のままA社の時のデーターを反映したいと言うことでなんですが、うまく説明できずすみません。 早速、アドバイスどおりにやってみます。
お礼
細かなアドバイスどうもありがとうございました。 今までのアドバイス通りで得意先名の変更とデーターの反映が出来ました。 私自身VBAとかはよく分からないので、もう少し勉強してからシステムを構築し直したいと思います。 本当に助かりました。