
前回で入力フォームからの新規追加の機能は完成しました。
今回は、同じ入力フォームを使って編集も出来るようにしていきたいと思います。

まずは、「F_名物」フォームに「編集」ボタンを追加します。
名前:buttonEdit
標題:編集

次に[編集]ボタンの「イベント」タブの「クリック時」のところの右端にある[...]をクリックします。
そして、[追加]ボタンの時と同じように「コードビルダー」を選択して[OK]をクリックします。
するとbuttonEdit_Click()というイベントプロシージャが作られますので、ここに下記のように記述します。
Private Sub buttonEdit_Click() DoCmd.OpenForm "F_入力", , , , , acDialog, CStr(Me.ID) Me.Requery End Sub追加のときと違うのは、最後のパラメータがCStr(Me.ID)となっていることです。これは、選択したIDを文字列として渡しています。これにより「F_入力」フォームでどのIDのレコード表示すればいいかが分かるようになります。

次に「F_入力」フォームの読み込み時イベントプロシージャを表示します。
そして、次のように書き換えます。
Private Sub Form_Load() If Me.OpenArgs = "NewRecord" Then '新規レコード DoCmd.GoToRecord , , acNewRec Else '該当するレコードに移動 Me.Recordset.FindFirst "ID = " & Me.OpenArgs End If End Subこれは何をやっているのかというと、OpenArgsで渡されてきた値を見て、"NewRecord"では無かった場合、該当するIDのレコードに移動させるということをやっています。
本当は、OpenArgsがNullまたは空文字でないかチェックしないといけないのですが、今の時点では分かりやすくするためにこのように単純な形で記述しています。
では、ここまで出来たら一旦保存して、「F_名物」フォームをフォームビューで開いてみてください。

開いたらどれかレコードを選択してから[編集]ボタンをクリックしてみてください。

そうすると、このように選択したレコードが「F_入力」フォームに表示されてきます。
ではここで、編集を行ってみたいと思います。

名物のところの「きしめん」を「台湾ラーメン」に変えてみます。
変更したら[閉じる]ボタンをクリックします。

すると「F_名物」フォームのほうにも変更が反映されたと思います。
これで入力フォームからの編集機能は完成しました。
では、最後に「F_名物」フォーム上から直接データを変更できないようにしたいと思います。
これを行うことによって編集は入力フォームから行うことに限定でき、誤ってデータを書き換えてしまうようなことを防ぐことが出来ます。

「F_名物」フォームをデザインビューで開き、プロパティシートの「データ」タブを開き、追加と削除と更新の許可を「いいえ」にしてください。
追加の許可:いいえ
削除の許可:いいえ
更新の許可:いいえ
これで「F_名物」フォーム上から更新や削除といった編集作業が出来なくなりました。
ためしに「F_名物」フォームをフォームビューで開いて更新や削除が出来ないか確かめてみてください。
以上で編集ボタン機能の実装は完了です。
次回は削除機能の追加を行ってみたいと思います。
<関連記事>
【初心者向け】入力フォーム(その1:追加)
【初心者向け】入力フォーム(その2:入力フォームの作成)
【初心者向け】入力フォーム(その3:イベントプロシージャの作成)
【初心者向け】入力フォーム(その4:編集ボタンの作成)
【初心者向け】入力フォーム(その5:削除機能の実装)
スポンサーリンク