OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

Accessフォームに値を自動挿入したいんです

  • すぐに回答を!
  • 質問No.241630
  • 閲覧数1278
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 33% (12/36)

どなたか教えてください!
フォームであるテキストボックスに値を入力すると、他のテキストボックスに自動的に値が表示されることって出来ますか?また、どうやって設定するのでしょうか?

私が作成したいのは以下のとおりです。
「国別」データベースと「メール受信履歴」データベースを作成します。

「国別」データベースには「国名」「州名(アジア州やヨーロッパ州など)」の2つのフィールドがあります。

また、「メール受信履歴」データベースには「受信日付」「メールアドレス」「国名」「州名」の4つのフィールドがあります。「国名」には「コンボボックス」を使用して「国別」データベースの「国別」を参照するように設定しています。

そして、フォームで「国別」テキストボックスと「州別」テキストボックスを作成し、「国別」テキストボックスを選択したら自動的に「州別」テキストボックスに州名を表示したいのです。


説明が分かりづらいと思いますがよろしくお願いします<(_ _)>
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル1

ベストアンサー率 0% (0/0)

imu_kaさん、こんにちは。 さて、まず確認していただきたいのは、「国別」(国名?)コンボボックスのプロパティです。 「データ」タブの「値集合ソース」ではどのような値が指定されてますか? 以下のようにプロパティを設定していけば良いと思います。 「値集合ソース」に「国別」データベース(テーブルですよね?)の「国名」と「州名」を指定します。 次に、「書式」タブの「列数」を「2」にして、「列 ...続きを読む
imu_kaさん、こんにちは。

さて、まず確認していただきたいのは、「国別」(国名?)コンボボックスのプロパティです。
「データ」タブの「値集合ソース」ではどのような値が指定されてますか?
以下のようにプロパティを設定していけば良いと思います。

「値集合ソース」に「国別」データベース(テーブルですよね?)の「国名」と「州名」を指定します。
次に、「書式」タブの「列数」を「2」にして、「列幅」を「州名」が0cmになるように指定します。つまり、「国名」、「州名」の順で「値集合ソース」を指定している場合は、「3cm;0cm」と「列幅」を指定します(1番目の値はコンボボックス選択時のデータ表示幅なので、お好きな値をどうぞ)。
そして、「イベント」タブの「クリック時」で「イベント プロシージャ」を選択し、「…」ボタンをクリックします。すると、コードが書かれたウィンドウが開かれます。ここには以下のように記述します。

Private Sub 【「国名」コンボボックス名】_Click()
【「州名」テキストボックス名】.Value = 【「国名」コンボボックス名】.Column(1)
End Sub

1行目(Private~)、3行目(End Sub)は自動で書かれているはずなので、2行目を書き足してください。【】でくくられた部分は、imu_kaさんが付けた名前を入れてください。
コードが書かれたウィンドウを閉じて、フォームを保存し、実行してみてください。
これで、「国名」コンボボックス選択時に自動的に「州名」テキストボックスに値がセットされるはずです。

  • 回答No.2
レベル12

ベストアンサー率 63% (325/508)

ご質問のとおりの処理でしたら、国別コンボボックスの更新後処理イベントに、VBA でテキストボックスの表示を更新する内容を書いてやればよいとは思いますが・・・・。 ここでは、別の提案をさせてください。 「国別テーブル」と「メール受信履歴テーブル」の両方に、「国別」と「州別」の二つのフィールドデータを重複して入れるのは、データベース全体として効率がよくないと思います。 Accessのようなリレー ...続きを読む
ご質問のとおりの処理でしたら、国別コンボボックスの更新後処理イベントに、VBA でテキストボックスの表示を更新する内容を書いてやればよいとは思いますが・・・・。

ここでは、別の提案をさせてください。

「国別テーブル」と「メール受信履歴テーブル」の両方に、「国別」と「州別」の二つのフィールドデータを重複して入れるのは、データベース全体として効率がよくないと思います。
Accessのようなリレーショナルデータベースでは、一意に付随して決まってしまうデータを重複して持つことは、後々のデータの整合性を考えても、望ましくありません。

以下、提案です。
「メール受信履歴テーブル」には、「受信履歴ID」(主キーとしてレコードを固有に識別できるデータがあった方がよい)、「受信日付」、「メールアドレス」、「国別ID」の4つのフィールドを、そして「国別テーブル」には、「国別ID」、「国名」、「州名」の3つのフィールドを、定義し、各テーブルを「国別ID」で関連付けては、いかがでしょうか?

具体的には、まず、上記のように、二つのテーブルを作ります。(「国別テーブル」には、できるだけデータを入力しておいてください。)

次に、クエリーをデザインビューで新規作成します。
「メール受信履歴テーブル」と「国別テーブル」をクエリーに追加し、それぞれを「国別ID」で結合します。

上記のクエリーをコントロールソースとして、フォームを作り、そこに各フィールドに対応したテキストボックスやコンボボックスを配置します。(オートフォームウィザードでも良い。)

国別コンボボックス(国別IDがコントロールソースになる。フォームウィザードで、テキストボックスになっていたら、書式→コントロールの種類の変更でコンボボックスにする。)の書式タブで、列数を2に、列幅を0(ゼロ)cmに、また、データタブで、集合値タイプを テーブル/クエリーに、集合値ソースを国別テーブルに、連結列を1にします。

以上で、特にイベント処理をしなくても、州名も連動して更新されるようになります。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ