- ベストアンサー
Accessでわからない事があります
Accessをつかってデータベースを作っています。 テーブルもいくつか作り、それぞれの入力フォームやレポートもつくりました。しかしもとのテーブルに追加したいフィールドがあるのですが、エラーメッセージ「定義されているフィールドが多すぎます」とでて、新しいフィールドを保存できません。ただ、別名で保存する事は出来ます。しかし別名で保存すると、クエリやレポートやらをもう一度作り直さないといけません。(少なくとも今の私のAccessに対する知識ではそれしか出来ないと思われます。)別名では保存できて、もとのテーブルで保存できないのは、なにか設定を変えればいいのでは?と思っているのですが、どなたか教えてください。結構な大作なので、もう一度テーブルの段階から作り直すのはやや気がめいってしまいます。どなたか助けてください。宜しくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
そのメッセージが出るということは、テーブル設計が間違っています。 AccessはExcelのように、自由にフィールドを増やす事が出来ません。 テーブル設計をしっかりやっておかないと、今回のような事になります。 データベースは、一度設計してテーブルを作成したらよほどの事がない限りフィールドレイアウトに変更は加えません。 使用しているデータベースは最適化されていない状態のようですので、最適化を行い、テーブルの再作成を行う以外方法はないと思います。 さて、最適化の方法ですが、該当テーブルのフィールドの中で、コードで一意に指定できる項目はありませんか? データベースの教科書などの例では、得意先、仕入先、社員名、商品など、再利用可能なフィールドを一意になるコードをつけて別テーブルを作成し、メインテーブルには「得意先コード」「商品コード」だけを持つようにします。 得意先テーブルなどには、得意先コード、連絡先、住所、担当者や商品コード、商品名、仕入先、仕入れ価格などを保管しておきます。 こうすれば、得意先コード1つで様々な情報が利用できます。 1フィールドが1日のデータで、1レコードに1ヵ月分のデータを持っているのなら、1日を1レコードとなるように設計変更をするのも一つの回答です。この場合、フォームやレポートに影響が出ますが、仕方ないです。 面倒くさい作業ですが、データベース設計で楽をしたぶん…と、思ってと諦めてください(^^; 因みに、データベースをAccessからOracleやSQLServerにしても、フィールド数の上限があることには変わりないので、同じ問題にぶち当たります。
その他の回答 (6)
文字数がディフォルトの255文字のまま、多くの文字型フィールドを作成しているとか...
お礼
ありがとうございました。 なんとか解決できました。ありがとうございました。
- nicotinism
- ベストアンサー率70% (1019/1452)
具体的にフィールド数はどれ位なのでしょう・・・ 最適化とか、 新規MDBを作成して全部インポートしてみるとか。 めちゃフィールド数が多いときは、 正規化も検討されては? [ACC] データベースの正規化の基礎 http://support.microsoft.com/default.aspx?scid=kb;ja;100139
お礼
最適化してみたのですが、なんとなくうまくいかなかったような気がします。。。。 なんとか今は使えるようになりました。ありがとうございました。
- Dxak
- ベストアンサー率34% (510/1465)
#1です > 別名で保存→元のデータを削除→別名のデータを元のと同じ名前に直す 記載している手順で、問題ないと思ったのですが・・・ 何が、うまく動作しなかったのでしょうか? リレーションが、動作していないのは何となくわかるのですが・・・
お礼
まさしくリレーションがうまくいってないといった感じでした。かといって、なんで良くなったのかわかってないのですが。これではまた同じミスをしてしまうかもしれまんね。どうもありがとうございました。
再検討とは、一からデーブル設計を見直すということです。 いわゆる正規化しないと、後日、にっちもさっちもいかなくなります。
お礼
結局、一から設計しなおしました。ありがとうございました。
少なくともテーブル設計でエラーが出るのであれば再検討がお勧めです。「ともかく、別名で保存したらOKなのでGO!」は、ちと・・・。
お礼
再検討しても分からないので質問させていただきました。「別名で保存してOK」でないので困っています。
- Dxak
- ベストアンサー率34% (510/1465)
別名で保存できるのなら、別名で保存して、オリジナル削除、別名で保存したものを、名前変更でオリジナルの名前にすれば、大丈夫なのでは?
お礼
一度やってみましたが(別名で保存→元のデータを削除→別名のデータを元のと同じ名前に直す)、上手くいきませんでした。もしこの手順で間違っている所があれば教えてください。また他の方法があるなら、教えてください。宜しくお願いします。
お礼
返事が大変遅くなり申し訳ありません。 結局テーブルを細切れにして作り直しました。 フィールドが多すぎた(300くらい?)が原因かと勝手に思っております。 とりあえず、使えるようにはなりました。 ありがとうございました。