• ベストアンサー

ACCESS2003のテーブル入力について

いつもこちらでお世話になっております。よろしくお願いいたします。 マイクロソフトアクセス2003にて、No.と項目名という2つのフィールドから成り立つテーブルがあります。 そのテーブルにはあらかじめデータがはいっています。 新規にそのテーブルに追加する項目が出来たとき、新規入力用のフォームを作成しました。 その時のNo.のフィールドなのですが、自動的にもともとあるテーブルの番号に無いものを規定値として表示させておくようにするには、どのようにしたらよいでしょうか? 例) 1、2、3、5があれば、4を 1、2、3、4があれば5を よろしくおねがいします。 もうひとつ質問なのですが、納品書を入力していくデーターを作成しているのですが、納品書のテーブルがあり、リレーションで項目や会社名などを関連テーブルとしています。 あらかじめ会社名や項目名のテーブルに入力されていない新規の会社の納品書を打ち込む場合、納品書テーブル入力フォームに、入力しただけで、項目名のテーブルや会社名のテーブルに追加されていく方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.1

1、主キーの追加要領。 >1、2、3、5があれば4を >1、2、3、4があれば5を この場合、仮に入力データを主キー昇順に表示すると入力順序と表示順序が異なるという不具合がでます。 また、登録データが数十万レコードに達した場合の処理速度に問題が出ることも予想されます。 そういうことで普通はシーケンシャルな一意の番号を用います。 で、仮にどうしてでもあれば・・・。 採番テーブル: 主キー名、最終番号、欠番の有無 GoodsID、1029、True 欠番テーブル: GoodsID、1001 GoodsID、1005 GoodsID、1007 このように、採番方式を採用することになろうかと思います。 データの入力時に、[採番テーブル][欠番テーブル]を参照・更新させるということです。 データの削除フォームを閉じた場合に[欠番テーブル]をチェックし整合性を取るかなども必要。 [採番テーブル]の参照・更新は昔からのセオリーですから問題はないと思います。 が、[欠番テーブル]の整合性保持のセオリーというのは一般的にはないでしょう。 ですから、ここがやはり問題になると思います。 2、商品名や取引先のマスターテーブルへの新規データの追加。 これも、普通は、新規であれば新規データ登録フォームをオープンしてデータを登録するでしょう。 で、新規データ登録フォームを閉じたら納品書フォームに該当する主キーが書き込まれているが常道。 決して、商品名や取引先名を納品書テーブルには記憶しないと思います。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>自動的にもともとあるテーブルの番号に無いものを規定値として表示させておくようにするには、 >どのようにしたらよいでしょうか? 複雑なコード体系で使用できる番号が決まっているような場合は 使用できる番号をすべて格納したテーブルを用意しておき 使用済みのものには印を付けるようにし 未使用の番号の最小を取り出すようにします ただしアップされた例のように単に番号を続けたいということなら データベース的には全く意味のない操作ですから止めておいた方がいいですね >新規の会社の納品書を打ち込む場合、納品書テーブル入力フォームに、入力しただけで、 >項目名のテーブルや会社名のテーブルに追加されていく方法はありますでしょうか? あるテーブルが他のテーブルを参照している場合 参照先のテーブルへの入力を先に済ませておかないといけない のはデータベースの仕組みからくる制限です これを変えることはできません 質問のようなケースに対処する方法としては 参照先テーブルの項目をコンボボックスから選ぶようにしておき 参照先にないものを入力したときに生じる「リスト外入力」イベントで 参照先テーブルへの入力フォームを立ち上げるというようにします 「リスト外入力」(NotInList)でヘルプやWEBを検索してみてください

nsurnains
質問者

お礼

新規入力用のフォームの「レコード移動時」イベントに、”最大値+1”で、新しい番号を規定値として表示させておくことが出来ました。 欠番は、難しそうでしたのであきらめ、新しい番号だけを規定値とする形にしました。 質問の内容が解りにくい文章だったかもしれないです。 その中で丁寧にご指導いただき、ありがとうございました。

関連するQ&A