Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


94 / 2272 ツリー ←次へ | 前へ→

【13037】教えてください。IDを引き継いでのデータ入力 エルビス 16/6/14(火) 12:33 質問[未読]
【13039】Re:教えてください。IDを引き継いでのデー... かるびの 16/6/16(木) 11:09 回答[未読]
【13041】Re:教えてください。IDを引き継いでのデー... エルビス 16/6/16(木) 14:34 質問[未読]
【13042】Re:教えてください。IDを引き継いでのデー... かるびの 16/6/17(金) 17:30 回答[未読]
【13046】Re:教えてください。IDを引き継いでのデー... エルビス 16/6/20(月) 12:03 お礼[未読]

【13037】教えてください。IDを引き継いでのデータ...
質問  エルビス  - 16/6/14(火) 12:33 -

引用なし
パスワード
   お世話になります。
教えてください。

アクセスの埋め込みマクロで出来たらうれしいです。

テーブルは二つ。
・顧客テーブル
・アンケートテーブル

顧客からアンケートを取得すると、アンケートが増えていきます。
顧客IDがリレーションしております。

フォームも二つあります。
・検索結果フォーム(顧客検索の結果を表示)
・アンケート入力フォーム(データ元は結合クエリ)

そこで、顧客名を検索して、顧客IDを表示させます。
この検索結果フォームから、顧客IDを引き出して、アンケート登録を行いたいです。

クエリを二つ作りました。
・顧客名検索クエリ
・結合クエリ

顧客名検索クエリで、顧客名を検索できます。
このクエリで、顧客IDが表示されております。

続いて、この顧客IDを利用してアンケートを入力したいのですが、アンケート入力フォームをデータモード追加で開くことはできます。

しかし、検索結果の顧客IDを代入できません。

どのような方法がありますでしょうか?
教えてくださいませ。

よろしくお願いします。

【13039】Re:教えてください。IDを引き継いでのデ...
回答  かるびの  - 16/6/16(木) 11:09 -

引用なし
パスワード
   >テーブルは二つ。
>・顧客テーブル
>・アンケートテーブル

 それぞれの主キーは何というフィールドであり、そのデータ型は何なのか、主要なフィールドとしてどんな名前のフィールドがあり、そのデータ型は何か
については、説明してほしいと思います。


>フォームも二つあります。
>・検索結果フォーム(顧客検索の結果を表示)

 検索結果フォームのレコードソースは何なのですか。


>クエリを二つ作りました。
>・顧客名検索クエリ
>・結合クエリ

 前者は、どんなクエリなのか何となく想像がつきますが、
後者は、どんなクエリなのか、つまり、ベースとしたテーブルが何なのか、結合フィールドは何であるか、抽出条件を何か設定しているのかなどが
全く想像つきません。


>しかし、検索結果の顧客IDを代入できません。

 これも状況がよくわからないですね。
 つまり、アンケート入力フォームにおける、「顧客ID」フィールドをコントロールソースとする
コントロールに手入力でも入力できないということなのか、
 アンケート入力フォームを開いたときに、「顧客ID」フィールドをコントロールソースとする
コントロールに顧客IDが入るようなVBAのコードを書いたが、そのコードが効かず、当該コントロールが Null のままということなのか、
 そういうVBAのコードを書きたいが、どんなコードになるのか全く想像つかないということなのか、
 あるいは、これら以外の状況なのか
ということです。

【13041】Re:教えてください。IDを引き継いでのデ...
質問  エルビス  - 16/6/16(木) 14:34 -

引用なし
パスワード
   カルビのさま
ご返答ありがとうございます。

もう少し説明させてください。

---テーブル---
・顧客テーブル
フィールド1:顧客ID:主キー、自動発番
フィールド2:顧客名

・アンケートテーブル
フィールド1:アンケートID:主キー、自動発番
フィールド2:顧客ID:顧客テーブルの顧客IDとリレーション
フィールド3:アンケート結果

---クエリ---
・顧客名検索クエリ:顧客テーブルのフィールド2を検索します
・結合クエリ:顧客テーブルとアンケートを関連つけて表示させます。
(顧客とアンケートが一連で表示されるだけ)

---やりたいこと---
1.顧客検索クエリで顧客を検索
2.検索結果のリストから、顧客を選択
3.マクロ用のボタンを押すことで、この顧客にアンケートを追加

---困っている状況---
私の見解では、
1.アンケート入力フォームを新規追加モードで起動
2.検索結果フォームの顧客IDが表示されているテキストボックスの値をクエリの顧客IDに条件入れ

例えば、
Where式:[Forms]![顧客検索フォーム]![Text1]=[結合クエリ]![アンケートテーブル]![顧客ID]
こんな感じだと思っていましたが、うまく設定できませんでした。
フォームはデータ追加モードで開けますが、顧客が選択されていません。とほほ。。

もし、間違いや注意点ありましたら、教えていただけますと助かります。
よろしくお願いします。

【13042】Re:教えてください。IDを引き継いでのデ...
回答  かるびの  - 16/6/17(金) 17:30 -

引用なし
パスワード
   >>しかし、検索結果の顧客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」

という形でテーブルからコントロールまでがつながるからです。

【13046】Re:教えてください。IDを引き継いでのデ...
お礼  エルビス  - 16/6/20(月) 12:03 -

引用なし
パスワード
   連絡ありがとうございます。

もうすこし自分でもがんばってみます。
また、分らないことありましたら、相談させてください。
とりあえず、値の代入をトライしてみます。

94 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078186
(SS)C-BOARD v3.8 is Free