• ベストアンサー

アクセスでテーブル入力用のフォームを他のテーブルのレコードを参照しながら入力するには

こんにちわ アクセスでテーブルのレコードを作成するのに 他のテーブルのレコードを引っ張ってきて フォーム上で表示したいのですが うまくいきません たとえば、社員名テーブル(従業員番号と名前) 配属テーブル(従業員番号と営業所コード) 支社テーブル(支社名と営業所コードの上2桁) 営業所テーブル(営業所名と営業所コード)を作成しておきます 退職者が出るたびに 退職者テーブル用のフォームに 従業員番号を入力すると フォーム上にその人の名前・支社名・営業所名が表示され それを確認してから その他のデータをその同じフォームに 入力したいのです 今、試しに作ったのは テーブルに一度上書きしないとデータを引っ張ってこないの不便なのです よろしくお願いします

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

従業員番号・名前・営業所コード・支社名・営業所名を表示するクエリを作りそれを基にコンボボックスをフォーム内に作ります。 そのコンボボックスをコンボ1と名前を付けたとしてフォーム上の名前・営業所コード・支社名・営業所名の各フィールドにコンボボックスに表示される内容を出したい場合。 (従業員番号はコンボボックスを作る時に次のフィールドに保存するのところで従業員番号を指定しておいて) Private Sub コンボ1_AfterUpdate() 名前 = コンボ1.Column(1) 営業所コード = コンボ1.Column(2) 支社名 = コンボ1.Column(3) 営業所名 = コンボ1.Column(4) End Sub 上記の記述を更新後処理にすれば出来ます。 試してみてください。

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

社員名テーブルを基に従業員番号・名前・営業所コード支社名・営業所名など必要な(表示させたいフィールド)を持たせたクエリを作り退職者テーブル用のフォームにそのクエリを基にコンボボックスを作ります。 そのコンボボックスから選択したレコードをフォームの各フィールドに表示すれば良いのではないでしょうか。 コンボボックスのイベントで更新後処理で出来ます。

futtan
質問者

お礼

早速のご回答、ありがとうございます コンボボックスのイベントで更新後処理で出来る とのことですが、 更新後処理ほどのように行うのでしょうか?

  • keikan
  • ベストアンサー率42% (75/176)
回答No.1

クエリーをうまく活用してください。 まず従業員番号を入力してできる、社員名テーブル、配属テーブル、支社テーブル、営業所テーブルを結合させたテーブル(クエリー)を作成してください。 それをもとに、そのクエリーを追加クエリーとして追加先を退職者テーブルにしてください。 こうすると従業員番号を入れただけで、退職者テーブルに必要なデータを自動的に追加できます。

futtan
質問者

お礼

ありがとうございます 各テーブルをつなぐクエリーをつくってみました フォームから入力し、テーブルを開けなおすと データをひぱってきます たぶん、 >そのクエリーを追加クエリーとして追加先を退職者テーブルにしてください。 >こうすると従業員番号を入れただけで、退職者テーブルに必要なデータを自動的に追加できます の部分で、どこか間違っているようです

関連するQ&A

  • ACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

    フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。 売上テーブル  ID   商品コード  日付    金額   1    G1     20080101  532153  2    G1     20080101  564281  3    G1     20080301  538123  4    J4     20080301  124531  5    J4     20080302  125483 ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型 これを使い、 フォームではまず レコードナンバーを入力画面        ↓ レコード番号を入れると、そのレコードのデーターが画面に表示され、 その画面で修正可能        ↓  保存 ボタンで保存 という流れです。 レコードナンバーはIDを使おうと思っています。 データの量が莫大な為、コンポボックスなどは使えません。 できるだけ、VBAなどは使わずに作りたいです。 よろしくお願い致します。

  • Access2000のフォームで番号を入力するとその他の情報が表示されるようにするには?

    入力フォームで番号を入力すると、名前などが同じフォームに表示される。 というのを作っているのですが。 テーブル1:ID・番号 テーブル2:番号・名前など(エクセルとリンク) クエリーで番号を1→2と繋ぎ、番号はテーブル2を使用。 (1)テーブル1が空欄だと何も表示されない。 (2)テーブル1に入力すると表示されるが、フォームで番号の入力はできない。 (3)新しいレコードも作製できない。 数年前に似たようなものを作った筈なのですが、そもそも出来ないのでしょうか。 宜しくお願いします。

  • Accessのフォームでの入力について

    Win7 Access2003 コード(01-0010-000 ~ 99-9999-999) 名前 住所 電話番号 といったデータベースがあって、フォームでコンボボックスからコード入力しています。 「05-0280-000」とハイフォンも含めて入力すればいいのですが、「050280000」と省略入力したく思っています。 書式を「!00\-0000\-000」「!99\-9999\-999」ではダメで、「!@@\-@@@@\-@@@」にすると希望通り表示されますが、「名前 住所 電話番号」が常に先頭のレコードのデータになってしまいます。 「050280000」と入力すると「05-0280-000」と表示されて、「05-0280-000」のデータが出るようにできないでしょうか? どうぞ、宜しくお願いいたします。  

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

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

  • Access97で自動入力と反映が違うテーブルの場合

    こんにちは、前の質問などでフォームへの自動入力は何とかできるようになったのですが、今度はその入力したデータを他のテーブルBに反映させたいのですが、どうしたら良いのでしょうか? テーブルA 店舗コード 店舗名 ※テーブルAの管理者は私ではなく、ネットワークで私のPCと「テーブルのリンク」でつながっています。 テーブルB 店舗コード 店舗名 商品番号 他に店の情報フィールドをいくつか作成 フォームC 店舗コード 店舗名 商品番号 他に店の情報テキストボックスをいくつか作成 フォームCで、店舗コードを入力したら店舗名が自動的に入力される方法は、フォームCのレコードソースをテーブルAにして、店舗コードの更新後処理をイベントプロシージャにして、下記イベントコードを設定しました。 Private Sub 店舗コード_AfterUpdate() Me![店舗名]=DLookup("店舗名","テーブルA","店舗コード=" & Me![店舗コード] & " ") End Sub そして、フォームの残りのテキストボックスに、店と商品に関するデータを入力し、入力した全てのデータをテーブルBに反映させたいのですが、どうしたら良いのでしょうか? 自動入力の方法でDLookupを使用したのがいけなかったのでしょうか? また、できればテーブルBは商品番号順に並びかえられているのですが、入力したら商品番号のリストの一番下に挿入されるという形にしたいのです。 どうかよろしくお願いします。

  • ACCESS 他のフォームを参照した値をレコード内にも書き込む(?)

    はじめまして。 ACCESS2000を使い始めて2日、ウェブ上のマニュアルやこちらのQ&Aなどを参考に、 簡単なデータベースを作っているのですが、悪戦苦闘の末、遂に行き詰まってしまいました。 初歩的な上に重複した質問かもしれませんが、お力添えよろしくお願いいたします。 質問は2つです。 現在の状態は、フォームの中にサブフォームを埋め込んで、 親フォームが顧客情報のテーブル(親テーブルとします)、 子フォームが各顧客の購買状況のテーブル(子テーブルとします)に対応しています。 (1) 子フォームにデータを入力する際に、親フォームの顧客番号が、 自動的に入力されるようにテキストボックスに設定しています。   =Form!顧客情報フォーム!顧客番号 これで表示される顧客番号を、更に子テーブルの顧客番号の項目に入力させたいのですが、 このままでは表示されるのみで、データとしては残ってくれません。 どのような式を足せばよいでしょうか。 (2) この親フォームの中に子フォームをもう1つ作り、 その2つめの子フォームから、1つめの子フォームを操作することは可能でしょうか。 「OpenForm」を使って、別のフォームから親フォームの表示内容を変えることはできたのですが、 埋め込んだ子フォームから子フォームへ同じ操作をする場合、どのような方法があるのでしょう。 まだまだ勉強不足で、言葉が足りない点が多くあると思われますので、補足要求お願いいたします。 本来は自己解決すべきところなのですが、お知恵を拝借したいと思います。 よろしくお願いいたします。

  • Access2002 フォームからのレコード入力の成功/不成功

    いつもお世話になっております。 早速ですが、従業員マスタテーブルがあり、それを元に従業員の情報を入力するフォームを作成しました。 従業員マスタテーブルは、「社員番号」だけをキーにしています。 例えば、新入社員のデータを、完全に新規に入力する場合、うまく行きます。 また、すでにいる社員の、「社員番号以外」のフィールドを更新することもできます。 しかし、社員番号が既存のものとかぶるような新規登録、あるいは情報変更に関しては、入力用フォーム上では正常終了したように見えますが、実際の従業員マスタテーブルをチェックしてみると、変更はされていません。 ですので、フォームしか触れないユーザは、自分の変更、新規追加がうまく行ったのかどうか、テーブルが見られないのでわからない、という状況になっています。 仕様要求としては、新規であれ、情報変更であれ、既存の社員番号に重なる場合はメッセージボックスで「更新失敗」を表示したいのです。 If Exist・・・のような分岐を情報を入力するフォームの「閉じる」ボタンの裏に設けたいのですが、やり方がイマイチわかっておりません。 ご存知の方がいらっしゃれば、ご教授、よろしくお願いします。 --------------------------------------------------------------- <従業員マスタ> ・社員番号・・・テキスト ・氏名・・・テキスト <仕様要求> 社員番号「0001」と「0002」の社員が存在する場合・・・ ・情報入力画面で、「0001」の社員の社員番号を「0002」に変更しようとすると、エラーメッセージ表示 ・新規情報入力(新入社員など)の際、社員番号が「0001」や「0002」の社員として登録しようとすると、エラーメッセージ表示 以上、お時間のあるときによろしくお願いします。

  • Access2002 レコード入力時に更新/追加を判別できないでしょう

    Access2002 レコード入力時に更新/追加を判別できないでしょうか? わかりにくくてすみません。 現在、簡単な従業員データベースを作っています。 テーブルは2つだけです。 T_基本データ ・従業員番号=主キー ・氏名 ・カナ T_付属データ ・従業員番号=主キー ・職位 だけです。 本来ならば、1つのテーブルでいいのですが、T_基本データのみ、他部署からMDBで送られてくるため、そのMDBの内容、構成は変更できない(頻繁に送られてくるため、いちいち弊部署にマッチした構造に変換する暇が無い)ため、リンクテーブルにしており、弊部署で必要な付属データを別テーブルにし、従業員番号でリンクしている状態です。 フォームは2つ作っており、1つはT_基本データと、T_付属データを一まとめにして表示できるようになっています。付属データが存在しない場合は、該当項目のテキストボックスは空白です。また、従業員番号や氏名で検索(フィルタ)できるようにしています。単票形式です。 そのフォームに「付属情報入力フォーム」を呼び出すコマンドボタンを用意し、そのフォームを呼び出すようにしています。こちらも単票形式です。ちなみに、プロパティで「入力用=はい」にしています。こうしないと、T_付属データの1レコード目が変更されるだけで、追加してくれないためです。 1つ目のフォームで付属情報入力用フォームの呼び出しボタンをクリックすると、フォームが現れ、従業員番号と氏名のテキストボックス(表示済み)と付属情報を選択するコンボボックスが表示されます。 ここで、コンボボックスから適当な項目を選択し、保存を押すと、そのフォームが消え、1つ目のフォームがリクエリーされて、選択した付属情報がテキストボックスに表示されます。 ここまではすんなり作成できたのですが、問題は、一度入力した付属データを更新できないのです。(消すことはできますので、ユーザがめんどくさがっても、一度消去→再入力、は可能です。が。。。美しくない気がします) 一度付属データを入力した社員を1つ目のフォームで表示させ、付属データ入力用のフォームを表示させると、すでに入力してある付属データが表示されますが、これを変更して終了ボタンを押すと、主キーが重複・・・というメッセージが出て保存できません。 当たり前といえば当たり前なのですが。。。 私の頭の中では、2つ目のフォームで、 1.コンボボックスで職位を選択 2.終了をクリック 3.T_付属情報で従業員番号を検索し、あればそのレコードを更新、なければ新規レコードを追加 というシナリオがあるのですが、どう実現していいのかがわからない状態です。 お詳しい方、ご教授くださいませ。 また、「この程度なら1つのフォーム(とサブフォーム)でできるじゃん」という気もするのですが・・・そういう解決策もあればお教え願えれば幸いです。 長文になりましたが、何卒よろしくお願いします。

  • Q>access2000でフォーム画面での新規レコード

    access2000でJANテーブルに[janコード][商品名]があります。 フォームでカード形式フォームを作ったのですが、 新しくJANコードを登録する為の新規レコードを表示させたいのですが、 コマンドボタンを作ったのですが、JANコードのセル?に カーソルが自動で行きません。 左下の現在のレコード番号が書いてある、 右側の>*のボタンを押すと、きちんと新規レコードに行って、 カーソルもJANコードのセルに行ってくれるのに・・。 そこで、教えていただきたいのですが、 テーブルを開くと、常に新しいレコードを表示させる。 もしくは、 フォーム内に作ったボタンを押すと、>*のボタンを押した時と 同じようになる方法をご存知の方いらっしゃいましたら、 よろしくお願いします。 (私はお礼&ポイント発行は必ずしていますのでよろしくお願いします。)

  • ACCESS2000でクエリで抽出したレコードをフォームに表示するには

    A顧客テーブルで作成したフォームからコマンドボタン(電話番号検索)押下時に 電話番号入力画面が出て入力した電話番号とマッチした顧客レコードをフォームに 表示させたいのですが上手く出来ません。 現在進めている方法では何がダメなんでしょうか(以下は考え方) A顧客テーブルから作成したフォムに電話番号コマンドを作成してコマンドを 押すとクエリの実行をさせる。クエリはA顧客テーブルのフィールドを全て選択して抽出条件に[電話番号入力]としている。 (結果) ・フォームを開くと先に電話番号入力が出てくる、先にフォームが開かない。 ・電話番号検索コマンドボタンを押すと抽出条件に合ったレコードはデーターシートビューに表示される。 よろしくお願いします

専門家に質問してみよう