Microsoft Access 掲示板

プルダウンの二つの値をそれぞれのテーブルに代入したい

16 コメント
views
4 フォロー

お世話になります。

今、プルダウンを作っています。
そこで、2つの値を表示することができます。

が、普通にすると、AかBかどちらかの値を
テーブルに入力するようになりますよね?

これを、Aの値は「あ」に
Bの値は「い」にとそれぞれに適応した
テーブルに入力したいです。

これを1度のプルダウン操作で実現したいのですが、
可能でしょうか?

お手数かとは存じますが、
御指南をヨロシクお願い致します。

ワッフル
作成: 2022/02/07 (月) 15:05:49
通報 ...
1
りんご 2022/02/07 (月) 15:44:33 c564b@0e907

 Aの値は「あ」に、Bの値は「い」にとそれぞれに適応したテーブルに入力したいです。

 追加クエリを準備しておき、プルダウン操作で値Aが確定したら、追加クエリ1を実行、値Bが確定したら、追加クエリ2を実行。(追加クエリ1: テーブル「あ」に値Aを追加。追加クエリ2: テーブル「い」に値Bを追加。)
 試していませんが、こんな感じの方向性でコードを考えるのはどうでしょう?

8
りんご 2022/02/09 (水) 00:58:40 c564b@0e907 >> 1

プルダウンの二つの値をそれぞれのテーブルに代入

 プルダウン、行を選択、それぞれの列の値をそれぞれのフィールドに登録したい、という事だったのかしら。上手く汲み取れませんでしたね。
 

普通にすると、AかBかどちらかの値をテーブルに入力するようになりますよね?

 普通にすると、主キーの値をテーブルに入力することになりますよね。事前にプルダウンの元になるテーブルを用意し、AかBか適切なフィールドに主キーを設定して、登録先のフィールドに紐付けておきましょう。

Aの値は「あ」にBの値は「い」

 プルダウンのテーブルと登録先のテーブルを主キーで紐付けしておけば、Aの値は「あ」にBの値は「い」なんて必要ないですよね。クエリで参照・表示するだけです。

以上、単独主キーの話でした。複合主キーの場合、どうするかなぁ。
 

 

2
hiroton 2022/02/07 (月) 16:56:45 3d519@f966d

値を入力する場合、入力先のテーブルに加えて、そのテーブルのどのフィールドなのかの情報が必要です。「あ」はテーブル名ですか?フィールド名ですか?残りの不明な情報はどこにありますか?

また、Aに対する「あ」やBに対する「い」はどのように決まっていますか?(何を見たらわかりますか?)

3

そのフォームは連結フォームでですか。非連結フォームですか。
非連結フォームなら、VBAでテーブル登録することになります。

連結フォームなら、現状のテーブル構成はなるべく実態に近い形で提示してください。
そもそもテーブル設計から間違っている可能性大です。

4
ワッフル 2022/02/08 (火) 08:44:58 65534@318ee

沢山のお返事ありがとうございます。

あんまりAccessに詳しいほどでもないので、
ご返信を見ながらも頭がこんがらがってます。
すみません。以下的を射てご返信出来て
いなかったらすみません。

フォームでの表示は、
サイトID、サイト名でプルダウンを作り
「1|嬉しいあいうえお」ですね。

そうして、
「1」をサイトIDに
「嬉しいあいうえお」をサイト名に
プルダウンの1アクションで入力したいと思っております。

可能でしょうか?

5
hiroton 2022/02/08 (火) 09:09:16 5132c@f966d

そんな気がしてたので大丈夫ですよ

が、普通にすると、AかBかどちらかの値を
テーブルに入力するようになりますよね?

「普通」が難しい表現ですが、
・コンボボックスの値はそのコントロールソースのフィールドに入力されます
・入力される値は、連結列で指定した列です

質問の内容は一般には上の意味でとられると思います。(やろうとしてることがわからない。テーブル構造おかしくない?という話になる)


コンボボックスの更新後処理イベントで追加の入力処理をしてあげればいいです

コンボボックス
名前:サイトID
コントロールソース:サイトID

の場合、
新たにテキストボックスを設置し

テキストボックス
名前:サイト名
コントロールソース:サイト名

とする

Private Sub サイトID_AfterUpdate()
    Me!サイト名 = Me!サイトID.Column(1)
End Sub

Column(1)の数字は列番号(左端が0)です

6

フォームの「レコードソース」プロパティの設定はどうなってますか。
空欄ですか、それとも、テーブル名かクエリ名あるはSQLが設定されてますか。
空欄なら、非連結フォームになります。
なにか設定されていれば、連結フォームになります。

まずは、これについて回答してください。

非連結フォームなら、hirotonさんの回答でいいでしょう。ただし、テキストボックスに代入した値は、どこにも保存されないので、それをどのようにするかは、自分で処理を構築する必要があります。

連結フォームならテーブル設計に問題がある可能性が大きいです。
あえて「正規化崩し」で冗長なデータを持たせるという設計もありますが、質問内容からそのレベルでないように感じます。

7
ワッフル 2022/02/08 (火) 14:06:03 65534@318ee

お返事をありがとうございます。

連結フォームみたいで、
コントロールソースにも、
値集合ソース、値集合タイプにも
データーがありました。

9

連結フォームなら、下記の情報を提示てしもらえますか。
フォームのレコードソースのテーブルのテーブル名、フィールド構成、主キー設定
コンボボックスの値集合ソースのテーブル名、フィールド構成、主キー設定

10
ワッフル 2022/02/09 (水) 12:23:51 65534@318ee

お世話になっております。

以下が情報です。
フォームのレコードソースのテーブル名、
「Qhp_サイト登録情報_カウント」

フィールド構成
「サイト登録情報ID(主キー)
サイト情報ID
登録サイト名
登録キーワード
備考1」

です。

コンボボックスの値集合ソースのテーブル名
「Thp_サイト情報」

フィールド構成
「サイト情報ID(主キー)
登録サイト名
登録キーワード
登録文
備考1」

となっております。

それではどうぞ、
よろしくお願い致します。

11

「Thp_サイト情報」がメインテーブルで、「Qhp_サイト登録情報_カウント」にメインテーブルの「登録サイト名」「登録キーワード」を表示させたいということですよね。

「Qhp_サイト登録情報_カウント」に「サイト情報ID」があるので、それをもとに、メインテーブル「Thp_サイト情報」から、「登録サイト名」「登録キーワード」を参照して表示させることが可能なので、「Qhp_サイト登録情報_カウント」には「登録サイト名」「登録キーワード」は不要です。データベースでは同じデータを複数個所に格納しないというのが原則です。

別テーブルのデータを参照する方法はいろいろありますので、その時に応じて使い分けることになります。

基本は「オートルックアップクエリ」という機能です。詳細は下記を参照ください。

Accessの「オートルックアップクエリ」とは | できるネット

これを作っておいて、フォームやレポートのレコードソースに設定すればVBAなしでメインテーブルのデータを表示させることができます。

あと、フォームなとではコンボボックスのColumnプロパティを使う方法もよく使います。
今回のフォームはコンボボックスがあるので、テキストボックスのコントロールソースに、

=サイトID.Column(1)

=サイトID.Column(2)

と設定すれば「登録サイト名」や「登録キーワード」を表示させることが可能です。

12
りんご 2022/02/09 (水) 14:43:40 c564b@0e907

>> 10

 横から失礼しますね。登録キーワードは、1つのサイトに1つだけ?それとも、複数設定出来るようにするの?登録キーワードを管理するテーブルはあるの?

「Qhp_サイト登録情報_カウント」

 何かをカウントしたいの?
 それと、念のために確認ですが,クエリじゃなくて、Qhp_サイト登録情報_カウントという名前のテーブルですか?

13
ワッフル 2022/02/09 (水) 15:29:27 65534@318ee

お返事ありがとうございます。りんごさん。

>横から失礼しますね。登録キーワードは、1つのサイトに1つだけ?それとも、複数設定出来るようにするの?登録キーワードを管理するテーブルはあるの?

これは普通に複数設定できるようにしたいなと思っています。改めて考えると全く妥当ではないかもしれません…
空白を設け、羅列しても。ここは妥当ではないかも。

>何かをカウントしたいの?

これは、サイトの登録文の文字数のカウントです。クエリで設定しました。

>それと、念のために確認ですが,クエリじゃなくて、Qhp_サイト登録情報_カウントという名前のテーブルですか?

これはクエリです。クエリの時に、Qという文字列を入れて分かりやすくしております。

アクセスって奥深いですね。
hatenaさんにせっかくお返事いただいているのに、
私の頭では理解しきれず、混乱している状態です。

でも、何とか頑張りたいと思います。

14
りんご 2022/02/09 (水) 17:00:37 c564b@0e907 >> 13

Qhp_サイト登録情報_カウントはクエリです。

 了解です。クエリの元になっているテーブルは、Thp_サイト登録情報でしょうか。Thp_サイト情報でしょうか。両方でしょうか。もし、片方だけならば、デザインタブ『テーブルの表示』を押して、両方表示、紐付けておくと便利ですよね。

登録キーワードは普通に複数設定できるようにしたいなと思っています。

 登録キーワードは、Thp_サイト登録情報に保持する、Thp_サイト情報に保持しない。とすればいいのかもしれませんね。
以下、なんちゃってイメージです。

登録サイト名登録キーワード
ほにゃらら掲示板Access
ほにゃらら掲示板VBA
ほにゃらら掲示板

サイトの登録文の文字数をカウントしたい

 フィールド内の文字数を数える(LEN関数) - Accessの使い方みたいな感じと想像します。
 
 

 

15
ワッフル 2022/02/16 (水) 13:23:41 65534@318ee

沢山のお返事ありがとうございます。
情報が私にとっては難解で、なかなかお返事が
出来なくてすみません。

今日、ちょっと分かったところが
あったので、動きました。

hatenaさんの
=サイトID.Column(1)
=サイトID.Column(2)

をちょっと試してみたところ、
「#Name?」と表示されました。
後入力した値が自動的に改変され
「=[サイトID].Column

となりました。
宜しく御指南していただけましたら幸いです。

りんごさんもありがとうございます。

16

コンボボックスの名前は「サイトID」で間違いないですか。

自動で[]が付くのは自動補完機能なので問題ないです。コンボボックス名に間違いがなければ、

=サイトID.Column(1)
と設定すれば、
=[サイトID].Column
と補完してくれます。