#712 | ボタンをクリックしたときだけ新規レコードを追加可とするには? | フォーム、VBA | |
テーブルやレコード編集可能なクエリをレコードソースとするフォームを作ると、既定でレコードの更新・追加・削除可能なフォームとなります。ここでは、通常時は”追加不可”で、あるコマンドボタンをクリックすると1件だけ新規レコードが追加できるようになるフォームの例を説明します。 まず例として次のようなデザインのフォームを作成します。 サブフォーム(サブフォームコントロールではなくサブフォームのフォームそのもの)の「追加の許可」プロパティは既定値として”いいえ”に設定しておくのがひとつのポイントです。 ここでは、各プロパティを次のように設定します。
次にレコード追加ボタンのクリック時イベントプロシージャを次のようにします。 ここでのポイントは、「追加の許可」プロパティのVBA上の記述である「AllowAdditions」プロパティを一時的に「True(はい)」にしたあと1レコード追加し、「False(いいえ)」に戻すという点です。 また、「AddNew」メソッドでレコードを追加した際、そのままだと追加操作がすぐに取り消されたような状態になってしまい、追加したレコードが画面上消えてしまいます。 そこで、いずれかのフィールドに任意の値をダミーで代入します。それによって追加レコードに対して編集作業が開始されたと判断され、以降画面上から消えることなくそのレコードの編集操作ができる状態になります。 ※ここでは空の文字列を商品コードに設定していますが、データによって既定値があればその値をここでセットしてもよいかもしれません。 Private Sub cmdレコード追加_Click() '[レコード追加]ボタンクリック時 With Me!frm商品_sub.Form 'サブフォームを一時的に追加許可 .AllowAdditions = True '新規レコードを追加 .Recordset.AddNew 'ダミーのデータを設定 !商品コード = "" 'サブフォームを追加不可に戻す .AllowAdditions = False End With 'すぐに入力できるようサブフォームの商品コードにフォーカス移動 With Me!frm商品_sub .SetFocus !商品コード.SetFocus End With End Sub 実行例:
|
|||
|
Copyright © T'sWare All rights reserved |