前回、入力フォームの作成まで出来ましたので、次にイベントプロシージャの作成を行っていきます。
イベントプロシージャとは、イベントが発生した時の処理のことを言います。
プログラミングの世界では「ボタンが押された」とか「テキストボックスの文字が書き換えられた」といった、何か事が起きたときのことをイベントと呼んでいます。
では、まず最初に「F_名物」フォームの「追加」ボタンのイベントプロシージャから作成していきます。
「F_名物」フォームをデザインビューで開いたら、「追加」ボタンを選択します。
次に、プロパティシートの「イベント」タブの「クリック時」のところの右端にある[...]をクリックします。
すると、「ビルダーの選択」というダイアログが表示されますので、「コードビルダー」を選択して[OK]をクリックします。
そうすると、「Microsoft Visual Basic for Applications」というのが起動してきます。
そして、よく見ると下記のように書かれている箇所があると思います。
Private Sub buttonAppend_Click() End Subこれがイベントプロシージャになります。
ここに「追加」ボタンがクリックされた時の処理を書いていきます。
ではここに、入力フォームを表示する処理を記述します。
下記のように書いてください。
Private Sub buttonAppend_Click() DoCmd.OpenForm "F_入力", , , , , acDialog, "NewRecord" End Sub
記述するとこんな感じになります。
先頭部分のDoCmd.OpenFormはフォームを開く命令になります。
次に続く"F_入力"は開く対象となるフォームの名前になります。そして、その次のacDialogというのはダイアログとして開くという意味で、最後の"NewRecord"は、表示するフォームに渡すパラメータになります。今回、このフォームを新規追加のために開きますので「NewRecord」という文字を渡しています。まあ、どんな文字を渡すかは自由なので「a」とか「b」でも構わないのですが、分かりやすくするために「NewRecord」としています。
では、処理が書けたら「F_名物」フォームをフォームビューで開いて「追加」ボタンをクリックしてみてください。
このように表示されれば成功です。
では、入力フォームの右上の×ボタンを押してダイアログを閉じてください。
次に、入力フォーム側のイベントプロシージャを作成していきます。
「F_入力」フォームをデザインビューで開き、
プロパティシートの「イベント」タブの「読み込み時」のところの右端にある[...]をクリックします。
そして、先ほどと同じように「コードビルダー」を選択して[OK]をクリックします。
するとForm_Load()というイベントプロシージャが作られますので、ここに次にように記述します。
Private Sub Form_Load() If Me.OpenArgs = "NewRecord" Then '新規レコード DoCmd.GoToRecord , , acNewRec End If End Subここでは何を行っているかというと、「F_入力」が表示される時に、渡されたパラメータが「NewRecord」かどうかを判断し、「NewRecord」の場合は新規入力状態にしています。
では、保存したら一旦「F_入力」フォームは閉じ、「F_名物」フォームをフォームビューで開いて「追加」ボタンをクリックしてみてください。
今度はIDのところに(新規)と表示されているのではないでしょうか。これは新規入力状態になっていることを表しています。
では一旦右上の×ボタンで入力フォームを閉じてください。
次に「F_入力」フォームの「閉じる」ボタンのイベントプロシージャを作成します。
先ほどと同じように「閉じる」ボタンを選択したら、プロパティシートの「イベント」タブの「クリック時」のところの右端にある[...]をクリックします。そして、先ほどと同じように「コードビルダー」を選択して[OK]をクリックします。
そして、次のように記述してください。
Private Sub buttonExit_Click() DoCmd.Close acForm, Me.Name End SubDoCmd.Close acFormでフォームを閉じるという意味になり、次の対象フォームを閉じる命令になります。ここではMe.Nameで自フォームの名前を取得して指定しています。
ではここで一旦保存したら、「F_名物」フォームから「追加」ボタンで入力フォームを表示し、「閉じる」ボタンでフォームが閉じられるか確認してみてください。
それでは最後に、入力フォームでデータを入力したら名物一覧の表示を更新する処理を入れます。
Private Sub buttonAppend_Click() DoCmd.OpenForm "F_入力", , , , , acDialog, "NewRecord" Me.Requery End Sub最初に作成した「追加」ボタンクリック時のイベントプロシージャにMe.Requeryというのを追加してください。
Meというのは自フォームのことを指していて、それをRequery(再クエリ)、つまりデータの再取得を行って表示しています。
では、試しに何か入力してみます。
名物:喜多方ラーメン
都道府県:福島県
入力出来たら右上の×ボタンでフォームを閉じます。
レコードが更新されていることが分かります。
<関連記事>
【初心者向け】入力フォーム(その1:追加)
【初心者向け】入力フォーム(その2:入力フォームの作成)
【初心者向け】入力フォーム(その3:イベントプロシージャの作成)
【初心者向け】入力フォーム(その4:編集ボタンの作成)
【初心者向け】入力フォーム(その5:削除機能の実装)
スポンサーリンク