- ベストアンサー
クエリフォームからのレコード追加方法とは?
- クエリフォームからのレコード追加についてビジネスアプリケーションでよく使用される機能の一つに、クエリフォームからのレコード追加があります。
- 具体的な例として、仕入マスタと商品マスタという二つのマスタがあり、品番でリレーションして「仕入マスタのフィールド(from仕入マスタ)+商品名(from商品マスタ)」を出すだけの単純なクエリがある場合、クエリフォームで新規レコードを追加する際に、品番を入力すると商品マスタから商品名が参照され表示されるフォームを作成することができます。
- 具体的な手続きとして、クエリフォームの「新規」ボタンにプロシージャを登録し、該当のテーブルに新しいレコードを追加するようにします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 仕入マスタに新規レコードをフォームから追加する際、 > 品番を入れたら商品マスタから商品名が参照され表示される、というフォーム 以下は、追加の時だけ表示するものではなく、常に表示されるものになります。 (商品マスタの品番には、重複がないものとします) 「仕入マスタのフォーム」が既にあるようですので、「品番」の横にでもコンボボックスを追加します。 ラベル部分は要らないと思うので、ラベルは削除しておきます。 コンボボックス名を「cbx品番」としたとします。 プロパティで以下を変更していきます。 コントロールソース: 品番 列数: 2 列幅: 0cm;4cm (1列目を非表示に、2列目の幅は適当に) 値集合ソース: SELECT 品番, 商品名 FROM 商品マスタ; (並び順があるのなら追加で指定します) 連結列: 1 タブストップ: いいえ これにより、「品番」テキストボックスの値を変えると、コンボボックスの表示も変わります。 また、コンボボックスを変更すると、「品番」テキストボックスの値が変わります。 新規ボタンが、「仕入マスタのフォーム」にあるのなら、以下のような書き方でいけると思います。 Private Sub 新規_Click() Me.AllowEdits = True Me.AllowAdditions = True DoCmd.GoToRecord , , acNewRec End Sub Private Sub Form_Current() If (Not Me.NewRecord) Then If (Me.AllowEdits) Then Me.AllowEdits = False If (Me.AllowAdditions) Then Me.AllowAdditions = False End If End Sub ※ 新規ボタンを押すまでは、編集/追加できないようにする、という前提で。 ※ 新規ボタン押したけど、何もせずに他へ移動しても大丈夫なように。 (レコード移動時に新規でなければ、Falseへ、重複設定を避けるように True の時のみ) ※ 新規の時のみコンボボックスを表示するのなら、上記タイミングで Visible を設定すればよいと思います。
お礼
>30246kikuさま ありがとうございました。 「仕入マスタ」でできました。 本当にいつもありがとうございます。 助かります。
補足
>30246kikuさま いつもいつもありがとうございます(><) ところでこのフォームのレコードソースは 「仕入マスタ」でしょうか それとも 「仕入クエリ」でしょうか。 宜しければお教えください。