ACCESS2000・フォームで主キー(No)を入力すると他の項目も自動的に表示させたい

このQ&Aのポイント
  • ACCESS2000のフォームで主キー(No)を入力すると、他の項目も自動的に表示させる方法について教えてください。
  • ACCESS2000のデータベースで、フォーム上で主キー(No)を入力すると、関連する他の項目も自動的に表示させたいです。
  • ACCESS2000のフォームで主キー(No)を入力すると、リレーションを設定した他のテーブルの項目も自動的に表示させる方法を教えてください。
回答を見る
  • ベストアンサー

フォームで主キー(No)を入力すると他の項目も自動的に表示

ACCESS2000・フォームで主キー(No)を入力すると他の項目も自動的に表示させたい。 テーブルの構成は、以下のとおりです。 データベース名:報告書 テーブルA          | フォームA  フィールド1(数値)    |  フィールド1(数値)  フィールド2(テキスト)  |  フィールド2(テキスト)  フィールド3(テキスト)  |  フィールド3(テキスト) テーブルB          | フォームB  フィールド1(数値)    |  フィールド1(数値)  フィールド2(テキスト) |  フィールド2(テキスト)   フィールド3b(テキスト) |  フィールド3b(テキスト) 主キーはフィールド1です。 リレーションを組んでおり、テーブルAからテーブルEまでのフィールドは同じ物ならば(フィールド1=フィールド1のように)リレーションを設定しています。 これをフォーム上ででフィールド1(主キー)を入力すれば、他のフィールド2、フィールド3~も自動表示され、他のフォームもフィールド1(主キー)を選択すれば表示されるようにしたい。 ユニオンクエリなどを使うべきなのでしょうか? どなたか回答、宜しくお願いします。

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

  • ベストアンサー
  • sanbit
  • ベストアンサー率32% (16/50)
回答No.5

またまたsanbitです。現役時代この種の処理はしょっちゅうしてまいりました。 (1)>コンボボックスで他の値を選んでも他のテキストボックスに表示できないのです。 *これは検索コンボボックスで選んだデータレコードの内容をサブフォームの各々のテキストに表示しないと言うことでしょうか? >テーブルの正規化をしたところ一部分のテキストボックスが動きました。 (2)*サブフォームのテキストボックスのことでしょうか、動くとは? 私の方で(1)(2)共、検証しましたが、問題ないです。 何かちょとしたことが有るかもしれません。補足ください時間が掛かるかも! 頑張って!

haruka-00
質問者

お礼

sanbitさん色々ありがとうございました。 無事出来ました。

その他の回答 (4)

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.4

sanbitです。 1)検索フォーム(親)のテキストボックスに検索データを入力すると サブフォームの検索データを表示するようになりましたか? 2)>主キーとなる部分がコンボボックスであり、選択したら表示するようにしたいのです。 検索用テキストボックスはコンボボックスに変えられましたか? *状況がよく解りませんが 検索用のテキストボックスをコンボボックスにする方法を案内します。 (1)検索用のテキストボックスを右クリック→コントロールの種類の変更→コンボボックスを選択 (2)コンボボックスのプロパティ→データタブ→値集合ソースの「・・・」をクリック→SQLステートメント:クエリビルダが表示 →テーブルを追加→コンボボックスに表示する項目をフィールドへドラッグ&ドロップ →この画面をとじます(保存します) 書式タブで「列数」「列幅」「リスト幅」を設定します。 これでコンボボックスができます。 コンボボックスの親子のフィールドが合っているか確認ください(前回回答)。 もう少しです!!頑張って!!!

haruka-00
質問者

補足

早速の回答ありがとうございます。感謝!感謝! 検索データを表示することは出来ましたが、なぜか、コンボボックスで他の値を選んでも他のテキストボックスに表示できないのです。 しかも、アクセスのツールメニューの解析、テーブルの正規化をしたところ一部分のテキストボックスが動きました。なぜなんでしょう・・・・。

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.3

検索用フォーム作成してください。  フォーム新規作成→デザインビューでできます。 このフォームに (1)ツールボックスのテキストボックスを張付け、適当な名前を付けます。 (2)ツールボックスのサブフォームを張付け、既存のフォームを使用するにチェック 前に作成したフォームを選択します。 (3)サブフォームをクリック→プロパティ→データタブで リンク子フィールド サブフォームの主キー名 リンク親フィールド テキストの名前 これでテキストに入れたデータとサブフォームの主キーの内容を表示してくれます。 フォームビューでテクストボックスに検索データを入れてください。 これでいはがですか?

haruka-00
質問者

補足

あれこれと、試しましたがどうやら主キーとなる部分がコンボボックスであり、選択したら表示するようにしたいのです。 VBAは一体どう記述すればいいのでしょう~。°°(>_<)°°。

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.2

sanbitです。 >フォームは全部で3つ作成するのでしょうか。⇒2個です。 1で作成したフォームはメインのテーブルAを表示し、B、C、D、Eの主キーに合った項目を表示してますか? また、レコード移動ボタン(画面の左下)1となって/件数を表示してますか? このフォームは移動ボタンで見る画面です。 2個目のフォームが検索主キーを入力した時、サブフォーム(1で作成したフォーム)に表示します。 2個目のフォームをデザインで開き、サブフォームをクリック→データタブで リンク子フィールド サブフォームの主キー名 リンク親フィールド テキストの名前 これでテキストに入れたデータとサブフォームの主キーの内容を表示してくれます。 なお、データを検索するだけで入力変更はできません。 もう1つ内容がよく解らないまま回答してます。 主旨に合っていなかったら補足ください。 でーた

haruka-00
質問者

補足

早々の返事ありがとうございます。 テーブルAで入力したものでB,C,Dで合った項目は、テーブルB,C,Dの主キーに合った項目を表示しています。 レコード移動ボタンの件数も表示されます。 データを検索も入力もできるようにするには面倒なのでしょうか。

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.1

1.フォーム作成(リレーション) フォーム新規作成→フォームウィザード→テーブルA選択→フィールド選択 続けてテーブルB選択→フィールド選択 テーブルEまでフィールド選択し、フォーム作成します。 2.検索用フォーム作成 もう1つフォームを作成し、 フィールド1(主キー)を入力用のテキストボックスを作成 サブフォームを作成、上記1で作成したフォームを選択、 リンク親フィールド「テキストボックス名」リンク子フィールド「サブフォーム主キー」を設定します。 ご質問の主旨に合ってますか?お役に立てば参考まで

haruka-00
質問者

補足

回答ありがとうございます。 1.ウィザードでフォームを作成しました。 2.検索用ともう一つとありますがフォームは全部で3つ作成するのでしょうか。 並びに、主キーを変更しても変化がありません。 教えてください。

関連するQ&A

  • アクセス 数値型にするとフォームの入力ができない

    お世話になります。色々調べたり、実験してみたのですが、分からない点があります。 簡単でいいので、可能性のある原因を教えてください。 アクセス2003です。 ■パターン1  フォームC の入力ができる テーブルA(主キーがオートナンバー型)、その他4つのテーブル(これら5つのテーブルは、参照整合性リレーションで結ぶ) →それらを元にクエリBを作る→クエリBを元にフォームC を作る ■パターン2  フォームC の入力ができない テーブルA(主キーが数値型)、その他4つのテーブル(これら5つのテーブルは、参照整合性リレーションで結ぶ) →それらを元にクエリBを作る→クエリBを元にフォームC を作る 簡単にいうと、テーブルのデータ型によって、入力可否が変わるのです。 なぜ、パターン2は、入力できないのか分かりません。 よろしくお願いします。

  • 主キーから他のレコードを表示させる。

    access2000です。 フィールドが「主キー」と「年」「名称」しかないテーブルが有ります。 非連結で「主キー」としたテキストは作りました。 この非連結のテキストに主キーを入れると、別のテキストに「年」「名称」が表示されるようにしたいです。 どうすればいいのでしょうか? 超初心者の質問ですみません。

  • 主キーが二つないと、フォーム入力が思ったようにできないのか?

    こんばんは。 従業員の出入りが激しいため、従業員の入社時の「志望動機」と 「退社理由」をデータベースで残して 分析しようという試みのため、 入力用にフォームを作ったけどうまくいきません。 (1)社員基本情報テーブル(主キーは、社員コード。フィールドは、社員コード、氏名、入社日、退社日、部署) (2)入退社テーブルを新規に作成(主キーは社員コード。フィールドは志望動機、退社理由) (1)、(2)を社員コードで結合してクエリを作成しました。 このクエリを元に、フォームを作成しました。 こちらで作成したいフォームのイメージは 社員コードを入れると、氏名と部署、入社日、退社日が自動的に参照。 あとは志望動機と退社理由を入れる。 ところが、実際には 社員コードを入れても自動的に参照は行われず、ただ、一度フォームを閉じてもう一度開けるとそこには上記データが参照されてきます。 ちなみに、(2)で主キーを社員コードと志望動機の二つにすると うまくいったのです。 うまくいった理由も分からないですし、うまくいかなかった理由も分かりません。 これは何がどう悪くてこのようになっているのでしょうか?

  • 未定義になるのは主キーじゃないのが原因?

    二つのテーブルを一対多のリレーションシップで繋ぐとき、 一になる方は主キーじゃないと、一対多にならなかったり参照整合性はできないのでしょうか? 主キーではないテーブル1のフィールド(一)と、(多)のテーブル2のフィールドでリレーションを組もうと思ってるのですが、 リレーションシップの種類が未定義になってしまいます。 これは、1になる方のテーブル1が主キーじゃないのが原因なのでしょうか? テーブル1のこのフィールドは、重複することはありませんが、空白も入る為、主キーにできないし、 主キーはほかのフィールドで使っています。

  • アクセスのフォーム、コードを入れると名前が出るのはなぜ?

    アクセス初心者ですが、フォームを作成時、疑問に思って考えるほど混乱してしまいました。 例えば、 Aテーブル:日付、店コード、売上のフィールドを作る。(主キーなし) Bテーブル:店コード、店名(主キーは店コード) リレーションは店コード(B)→店コード(A)に結び、すべての整合性にチェック それぞれのテーブルに、数件のデータを入力 この状態で入力フォームをウィザードで作ったのです。 Aテーブルからすべてのフィールド、Bテーブルから生徒氏名を選び、ウィザード任せにフォームを作りました。 このとき、できたフォームで出席番号を入れると何もしないのに、自動的に生徒氏名が入ってしまいます。 人に聞くと当たり前でしょ、みたいに言われたのですが、なんとなくわかるようでわかりません。どうして自動的に入るのでしょうか?ふりがなの自動入力みたいな設定をしたというのならわかるのですが、何もしてないのに。 すみません、自分でも、リレーションとか整合性とかについて、あるいはまだフォームとテーブルの関係について、よくわかってないせいなのだろうとは思うのですが、そこの所も合わせ、どなたか、分かりやすく教えていただけますか?宜しくお願いします。

  • アクセス:フォーム入力:【大項目→中項目への絞りこみ入力】方法を教えてください。

    アクセス初心者です。よろしくお願いします。 【やりたいこと:次のような大項目→中項目への絞りこみ入力】 フォームの入力で、大項目をリストで選ぶと、次に小項目のリストが自動で出て入力できるようにしたい。 ◆まず、テーブルで「大項目コード」表があります。   1  A   2  B   3  … ◆別のテーブルで、 「Aの小項目」表  11  ○   12  ×   13  △     「Bの小項目」表  21  ●  23  ■  24  ▲ というようなものがあります。 そこで、フォームで「大項目」フィールドに「1」(=A)を入力すると「小項目」フィールドに自動でコンボボックスのようなもので「○、×、△」がリストが出てコード番号(11,12,13)が入力できる、同様に「大項目」に「2」(=B)と入力するとリスト「●、■、▲」で選んで入力したいのです。 私が初心者であることから、上記のようなアクセス構築の考え方そのものも邪道なものかどうか、不安があります。 要は、【大項目→中項目への絞りこみ入力】ができればいいのです。できますなら、できるだけシンプルな方法を教えてくだされば幸いです。 よろしくお願いいたします。

  • Accessで主キーの最終番号を取得したい

    Access2000を使用しています。 以下のようなテーブルを作成し、町内毎に 実施したアンケートを集計しようと思います。 *************************************** 「アンケートテーブル」 --------------------------------------- 町内    テキスト  3バイト   入力連番  数値    4バイト 設問1   テキスト  1バイト (主キー= 町内+入力連番(7バイト)) **************************************** これに対し入力用のフォームを作成しました。 非連結のテキストボックスに町内名を入れると自動的に 町内ごとの入力連番の最終番号を取得し、「町内」と「入力連番」 のテキストボックスに町内名と入力連番(の最終番号)を表示させ 「設問1」のテキストボックスにフォーカスを移動させたいのですが 主キーが2つ以上のフィールドを組み合わせてできている場合の最終 番号の取得のやり方とテキストボックスに表示させるやり方がよく 分かりません。 Dmaxを駆使すればよいのだと思いますが、どなたか解説していただけ ばありがたいのですが・・・・。 どうぞよろしくお願いいたします。

  • accessのクエリで入力が不可能…

    【テーブルA】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔テキスト型〕 フィールド4〔数値型〕 【テーブルB】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔数値型〕 フィールド4〔テキスト型〕 となっています。 両方のテーブルを使い、クエリを作成しました。 リレーションが、テーブルAのフィールド1と、テーブルBのフィールド3に設定してあります。 このようにして作成したクエリでデータの入力ができません。 なぜでしょうか? Access2000です。

  • フォームでの自動入力

    Access2002を使用していますが、フォームでの自動入力につき質問させてください。 勘定科目テーブルというのがあって、コード番号と科目名だけの簡単なテーブルですが、会計取引入力のフォームを作成して、「コード番号を入力したら(勘定科目テーブルを参照して)該当する科目名を別のフィールドに自動表示&入力する」、という処理を行いたいのですが可能でしょうか? Excelのlookup関数のようなものですね。 どなたか教えてください。

  • アクセス フォームの設定

    テーブル【T-1】 フィールドA,主キー,数値型 フィールドB,テキスト型 フィールドC,テキスト型 フィールドD,テキスト型 フィールドE,テキスト型 フォーム【F-1】 テーブル【T-1】に入力用のフォーム,単票型 があります。 F-1でそれぞれのフィールドに対して入力スペースがあり(もちろんですが) A,B,C,D,Eと順番に入力していきます。 ここでエンターキーを押すと、次のレコードへ移るわけですが、 カーソルがEの位置にあるため、わざわざマウスでAの位置へ移動させないといけません。 同様に、入力項目がなく、A,B,Cと入力して次のレコードへ行くと、Cの位置にカーソルがあります。 これを、Aをホームポジションとして、次のレコードへ移ったときに 自動的にカーソルをAの位置にもってくるようにしたいのですが、 一体どうすればよろしいでしょうか?

専門家に質問してみよう