• ベストアンサー

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

  • Access フォームで複数テーブルの同時入力

    フィールド項目が多い為に複数のテーブルに分けて 同じフィールド名 [品番] で1対1でリレーションを組んでいます。 フォームの新規レコードで品番を入力の時に 各テーブルの品番に入力するのにはどうしたらいいでしょうか? 後々のことを考えると1つのテーブルにまとめたほうがいのでしょうか? フィールドが300ぐらいあるのでテーブルに分けたほうがわかりやすいので 現在は10テーブルに分けています。 よろしくお願いします。

  • Access フォームから複数テーブルの入力は?

    フィールドが300ぐらいあるので項目ごとにテーブルで分けています。 1つにまとめるクエリを作成して、そのクエリを元にフォームを作成しました。 テーブルはフィールド名:品番で1対1のリレーションを組んでいます。 テーブル:商品カラー  ・フィールド:品番  ・フィールド:カラー テーブル:商品サイズ  フィールド:品番  フィールド:サイズ クエリのフィールド  フィールド名:品番 (商品カラーのフィールド:品番を指定)  フィールド名:カラー (商品カラーのフィールド:カラーを指定)  フィールド名:サイズ (商品サイズのフィールド:サイズを指定) この場合、品番をフォームから入力すると商品カラーの品番のみ入力されます。 商品カラーと商品サイズの品番を同時にファームから入力は出来ないでしょうか? 現在は10テーブルありますが1つのテーブルにまとめたほうがいのでしょうか?

  • アクセスのテーブルとフィールドの関係について教えてください

    テーブル1からフォームを作成するとします。このフォームのなかの入力項目にテーブル2の中にあるフィールドを追加することは可能でしょうか?

  • 【ACCESS】フォームのデータでテーブル作成

    写真のようなフォーム上に「既設のフィールドの追加」でテーブルの値を追加し、分割フォームでデータを表示するフォームがあります。その後フォーム上のテーブルでフィルターをかけて、その状態のテーブルに対してクエリなどの処理をしたいと思いっております。 そこでフィルターをかけた状態のテーブルのデータを他のテーブルへ追加または新規作成することは可能でしょうか? 写真だと「フィールド1」をフィルタ「あ」をかけてあだけのデータを表示させてその状態のテーブルを別のテーブルへ追加または新規作成したいです。 実際のテーブルには100以上の項目があり使用者によってフィルタをかける項目も違うため自由にフィルタをかけた状態で別のテーブルへデータを追加したいと考えています。 拙い説明で申し訳ありませんがご指導よろしくお願いいたします。

  • ACCESSのフォームで入力したデータをテーブルに追加したい

    初歩的な質問だとは思いますが、自分の思うようにならず困っています。 テーブルのデータを元に日付のみメインフォームで単票形式で表示し、日付以外の項目はサブフォームで表形式で入力するフォームを作成したのですが、サブフォームの表形式の最後の行がいつも空白になり、そのデータが日付のみ入力され、テーブルのフィールドに追加されています。 説明がうまくできずわかりにくいとは思いますが、分かる方よろしくおねがいします。

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • Accessのフォームにテーブルの項目を追加するには

    フォーム作成途中にフィールドリストにないテーブルの項目をフィールドリストに追加するにはどうすればいいのでしょうか? 新たにフィールドリストに追加せずに、テーブル項目は追加するものなのでしょうか?

  • Accessでのテーブル作成や追加クエリなどについての質問です。

    ◆テーブル作成クエリで作成するテーブルにオートナンバー型のフィールドを設けたい。◆ (ナンバーが必ず1から振られることが条件) ※補足※ あらかじめオートナンバー型を含むテーブルを用意し、追加クエリ&削除クエリを使用すればよいという意見もありますが、この場合オートナンバー型のフィールドはカウントをアップし続けてしまう為断念。 ★教えてほしい事★ テーブル作成クエリからオートナンバー型のフィールドを作成できるのか? もしくは あらかじめオートナンバー型を含むテーブルを用意し削除クエリでテーブルのデータを空にしてから追加クエリでデータを入力しても必ずオートナンバー型のフィールドの先頭値は"1"から始まるようにできるか? 宜しくお願い致します。

  • Accessのエラー (いくつかあります・・・)

    アクセスでデータを入力したのですが、なぜか下記のエラーがでます… *作成したアクセスデータ* テーブル 項目AのCDと項目A、項目BのCDと項目B、項目CのCDと項目C、項目A~CのCDとその他繰り返し入力しないデータ の合計4つのテーブル それらすべてをリレーションでつないでます クエリ 全項目入りのテーブルを元に作ったもののみ フォーム クエリを元にウィザードを使って作成 *エラー* (1)クエリを作った時に、1つでもCDが入力されてないフィールドがあるとその行全体が表示されなくなる  (CDを入力したら表示されますし、テーブルではCDが入ってなくても全て表示されてます) (2)フォームで新たにデータを入力しようとしても一切入力できないし、変更もできない時がある (使用可能等の項目は一切触っていません) (3)フォームでCDが入ってる箇所を未入力にしたままでは保存できずに、「CDと値が一致しません」?のようなエラーメッセージがでる (すみません、エラーメッセージはうろ覚えです…) (4)なぜか昇順で番号を並べ替えていたのに、フォームでデータを追加したら、昇順が反映されずに「1,11,2…」のようにフォームのみ表示される (テーブル・クエリは反映されています) このエラーの原因がわかる方ぜひ教えてください!! よろしくお願いします。

  • 複数のテーブルへフォームから入力するには?

    ACCESSど初心者の者です。教えてください。 3つのテーブルがあります。 テーブル1 No.(オートナンバー),年(数値),月(数値),・・・多数の検針データ(数値型) テーブル2 No.(オートナンバー),年(数値),月(数値),・・・多数の検針データ(数値型・テーブル1とは項目違う) テーブル3 No.(オートナンバー),年(数値),月(数値),・・・多数の検針データ(数値型・テーブル1・2とは項目違う) 検針項目が多く1つのテーブルに収まらないため3つのテーブルに分けて作成しました。 検針データを毎月入力するのですが・・・ 1つのフォームで入力することは可能ですか? いろいろ調べてみたのですが・・・わからなかったので教えてください。

専門家に質問してみよう