|
>>しかし、検索結果の顧客IDを代入できません。
>
> これも状況がよくわからないですね。
> つまり、アンケート入力フォームにおける、「顧客ID」フィールドをコントロールソースとする
>コントロールに手入力でも入力できないということなのか、
> アンケート入力フォームを開いたときに、「顧客ID」フィールドをコントロールソースとする
>コントロールに顧客IDが入るようなVBAのコードを書いたが、そのコードが効かず、当該コント>ロールが Null のままということなのか、
> そういうVBAのコードを書きたいが、どんなコードになるのか全く想像つかないということな>のか、
> あるいは、これら以外の状況なのか
>ということです。
結合クエリが更新不可のクエリになっているのではないかという疑いがあったので、
上記の回答をしたわけですが、
>・結合クエリ:顧客テーブルとアンケートを関連つけて表示させます。
>(顧客とアンケートが一連で表示されるだけ)
ということからすると、結合クエリは更新不可のクエリではないようですね。
ということは、結合クエリの顧客IDフィールドに手入力で値を代入できるということです。
>3.マクロ用のボタンを押すことで、この顧客にアンケートを追加
テーブルレベルでの問題として、
アンケートテーブルのフィールド3に入力されたアンケート結果が、特定の顧客のアンケート結果であるためには、
アンケートテーブルのフィールド2に顧客IDが入っていることが必要です。
だから、「3.マクロ用のボタンを押すことで、この顧客にアンケートを追加」するためには、
このコマンドボタンクリックをしたら、結合クエリのフィールド2に当該顧客IDが入力されるようにします。
そのためには、どうするかですが、
アンケート入力フォームに、アンケートテーブルのフィールド2を表示するコントロールが配置されているのであれば、簡単です。
このコントロールの名前を「 txtアンケ顧客ID 」だとし、
顧客検索フォームにおいて、顧客テーブルのフィールド1を表示するコントロールの名前が
「 txt顧客顧客ID 」だとします。
具体的には、
「 txtアンケ顧客ID 」の Value プロパティに「 txt顧客顧客ID 」の Value プロパティの値を代入します。
VBAであれば、
Private Sub マクロ用のボタン_Click()
dim lngKokyakuID As Long
lngKokyakuID = Forms!顧客検索フォーム!txt顧客顧客ID.Value
Forms!アンケート入力フォーム!txtアンケ顧客ID.Value = lngKyokyakuID
End Sub
ですし、マクロであれば(といっても、マクロは使ったことがないので、書き方がよくわからない)、
「値の代入アクション」で
Forms!アンケート入力フォーム!txtアンケ顧客ID.Value = Forms!顧客検索フォーム!txt顧客顧客ID.Value
を実行するということになります。
ただ、その前段階として問題となるのは、アンケート入力フォームに、アンケートテーブルのフィールド2を表示するコントロール( txtアンケ顧客ID )が配置されているのかどうかということです。
そのためには、結合クエリに、アンケートテーブルのフィールド2のフィールド(当該フィールドの名前は「アンケートテーブル.フィールド2」となっているはずです。)が設けられていることが必要であり、
txtアンケ顧客ID のコントロールソースが「アンケートテーブル.フィールド2」となっていることが必要です。
このことに関連して、テーブルのデータがなぜコントロールに表示されるのか、テーブルのデータをなぜコントロールから書き替えられるのかといえば、
テーブル アンケート入力テーブルのフィールド2
↓
クエリ 結合クエリの「アンケート入力テーブル.フィールド2」
↓
フォーム レコードソース = 結合クエリ
↓
コントロール コントロールソース = 結合クエリ中の「アンケート入力テーブル.フィールド2」
という形でテーブルからコントロールまでがつながるからです。
|
|