- ベストアンサー
ACCESSでコンボボックスからの入力でリスト外の追加をフォームを使って登録
- ACCESSのデータ入力フォームで顧客名をコンボボックスから選択するが、リスト外の新規顧客を入力するためには別のフォームが開くようになっている。しかし、コンボボックスのリストに新規データが表示されない。どうすれば表示させることができるか教えてください。
- ACCESSのフォームで顧客名をコンボボックスから選択するが、リスト外の新規顧客を入力するためには別のフォームが開くようになっている。しかし、コンボボックスのリストに新規データが表示されない。どうすれば表示させることができるか教えてください。
- ACCESSのデータ入力フォームで顧客名をコンボボックスから選択するが、リスト外の新規顧客を入力するためには別のフォームが開くようになっている。しかし、コンボボックスのリストに新規データが表示されない。どうすれば表示させることができるか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ああ、申し訳ありません。 コンボボックスのフォーカス取得時に全体の再クエリを実行してしまうとそうなってしまいますね。 マクロではコントロール単位で再計算を行わせることができないら、いっそ再クエリボタンを作って、レコードを追加したあとは、再クエリボタンで変更を反映させる、とした方が確実かもしれませんね。 一手間増えますが、ベーシックな方法で実体験を積んで、内容を理解した後、より便利に改造する方が確実なステップかもしれません。 さてVBですが、全く難しい話ではありません。 フォーカス取得時にマクロを登録する際、コードを記入する選択肢もあったかと思います。そこをクリックしてください。すると、エディタ画面が起動して Private Sub コントロール名_Enter() End Sub と記入されたウィンドウが開くかと思います。(勿論コントロール名は実際の名前になっているはずです) この間に以下のように記入するだけです。 Private Sub コントロール名_Enter() コントロール名.Requery End Sub これだけです。簡単ですよね
その他の回答 (2)
- Notoshi
- ベストアンサー率50% (1/2)
今ひとつ状況がわかりにくいのですが、こういうことで良いのですか? 1.ベースとなるフォームがある 2.そのフォームには、あるテーブル若しくはクエリーをソースとしたコンボボックスがある 3.そのフォームから、2.のソースにレコードを追加できる機能がある 4.3.のボタンでレコードを追加したのに2.のコンボボックスに反映されない ということでしょうか? それでしたら、コンボボックスのリストは、フォーム初期化時に計算された後は、特別に指示されない限り変更されませんので、あとから追加したレコードは、そのままでは追加されません。 リストを反映させるためには「再計算」というアクションが必要になります。 私は、コンボボックスにはEnter時にリクエリーさせるVBAを仕込むのですが、VBAは理解されていないのですよね? 今は自宅で手元にAccessがなく、しかもいつもはVBAで処理してしまうので、マクロの知識が実は曖昧であやふやな回答で申し訳ないのですが。 コンボボックスのプロパティ-その他に、アクションを記述できるエリアがあったかと思います。「フォーカス取得時」に「再計算」をさせるマクロを指定すれば良いかと思います。 本当はそのコンボボックスだけで良いのですが、コントロール指定ができなければフォーム全体の再計算でもかまいません。 または追加用フォームを開いた後には必ず再計算を行わせる、というマクロでも良いかと思います。
- kmetu
- ベストアンサー率41% (562/1346)
コンボボックスを再クエリしてください
補足
こんばんは 回答ありがとうございます。 再計算とは再クエリでよいのでしょうか、コンボボックスのフォーカス取得後のマクロに再クエリをいれてみたところ今度はコンボボックスにカーソルを合わせると最初のレコードに移動してしまって、コンボボックスを使ってデータを選ぶことができなくなってしまいました。 イベントを記載するところが違っているのだと思いますが 解決できません。 参考にvbですとどのように記載したらよいでしょうか。 この機会にトライしてみようと思います。 それと登録フォームが開く際に 「指定した項目はリストにありません、リストから選択するか、リスト項目と同じテキストを入力してください」というメッセージを出なくすることはできるのでしょうか。 引き続きよろしくおねができればと思います 宜しくお願い致します