Accessプログラムの意味を解説|Access(アクセス)
Q:Accessのプログラムの意味を解説してください。
それではフォームの動作を確認しながら、プログラムの意味を確認します。
【1】作成したAccessのファイルを起動します。
【2】画面が開きますので、オブジェクトの「フォーム」を選択します。
【3】「開く」をクリックし、フォームを実行します。
—3で動いているプログラム—
Option Compare Database ←データベース型で比較。
Option Explicit ←宣言をしないと変数が使えないようにする。
Dim Res As Variant ← Resという変数をバリアント型で宣言する。
*変数とは数値、文字、日付などを一時的に記憶しておくための場所です。変数はどんなデータが入るか、使う前に型を宣言する必要があります。バリアント型は何にでも使える便利な型です。変数名は自由に決められます。
ここであまり難しく考えずに、「AccessのVBAでは最初に書く必要がある」という程度でかまいません。
Private Sub Form_Load() ←フォームを読み込んだ時。
Me.AllowAdditions = False ←レコードの追加をできなくする。
Me.AllowDeletions = False ←レコードの削除をできなくする。
DoCmd.SetWarnings False ←Accessからのメッセージを非表示に。
End Sub ←プログラムの終わり。
*このプログラムは、フォームを開いた時点で、レコードの追加や削除はできなくしています。追加や削除はボタンから行うようにしたいためです。
【4】フォームが開いたら、「新規」をクリックします。
【5】最後の行に新規レコードが追加されました。
—4、5で動いているプログラム—
Private Sub 新規_Click() ←新規をクリックした時。
Me.AllowAdditions = True ←レコードの追加をできるようにする。
DoCmd.GoToRecord acDataForm, “***”, acNewRec ←新規レコードへ移動
Me.***.SetFocus ←***へフォーカスを移動する。
End Sub ←プログラムの終わり
【6】下の図のようにデータを入力します。
更新した瞬間に一番下の空白行が消えます。
—この時動いているプログラム—
Private Sub ***_AfterUpdate() ←***を更新した後。
Me.AllowAdditions = False ←レコードの追加をできなくする。
End Sub ←プログラムの終わり
Private Sub ***_AfterUpdate() ←***を更新した後。
Me.AllowAdditions = False ←レコードの追加をできなくする。
End Sub ←プログラムの終わり
つまり、***か***を更新した後は、新規ボタンをクリックしない限り、レコードの追加をできなくしています。
【7】今入力したレコードを選択し、「削除」をクリックします。
【8】削除確認のメッセージボックスが表示されます。
【9】「はい」をクリックすると、選択したレコードが削除されます。
*「いいえ」をクリックすると、何もせずに元のフォームに戻りますので、試してください。
—7、8、9で動いているプログラム—
Private Sub 削除_Click() ←削除をクリックした時。
メッセージボックスを表示する。
OKがクリックされた時は以下の処理を実行する。
If MsgBox(“削除します。よろしいですか?”, vbOKCancel, “確認”) = vbOK Then
Me.AllowDeletions = True ←削除できるようにする。
On Error GoTo err_削除_click ←エラーが起こった時はラベルへ飛ぶ
DoCmd.RunCommand acCmdDeleteRecord ←レコードを削除する。
Me.AllowDeletions = False ←レコードを削除できないようにする。
Else ←Cancelがクリックされた時は以下の処理を実行する。
←何も処理が書かれていないので、何もしない。
End If ←If条件式の終わり
Exit Sub ←プログラムを抜け出す。
err_削除_click: ←エラーが起こった時はここへ来る。
MsgBox Err.Description ←メッセージボックスでエラーの内容を表示する。
End Sub ←プログラムの終わり
*上記のプログラムは、エラーが起こってもシステムを止めないように、エラー処理を加えています。
【10】今度は「印刷」をクリックします。
【11】印刷確認のメッセージボックスが表示されます。
【12】「はい」をクリックすると、印刷プレビューが表示されます。
*「いいえ」をクリックすると、何もせずに元のフォームに戻りますので、試してください。
—10、11、12で動いているプログラム—
Private Sub 印刷_click() ←印刷をクリックした時。
変数Resに、メッセージボックスの値を代入する。
Res = MsgBox(“印刷してよろしいですか?”, vbYesNo, “印刷の確認”)
Resに「はい」が入っていた時は以下の処理を実行する。
If Res = vbYes Then
レポートをプレビューモードで表示する。
DoCmd.OpenReport “***”, acViewPreview
Else←「いいえ」がクリックされた時は以下の処理を実行する。
←何も処理が書かれていないので、何もしない。
End If ←If条件式の終わり
End Sub ←プログラムの終わり
*今回は変数Resに一度値を代入して、それからIf条件式でどのボタンがクリックされたか判断しています。「削除」ボタンの時のように変数を使わないプログラムの書き方もできます。
13.レポートを確認したら「×」をクリックし、レポートを閉じておきます。
いかがでしたか?動作を見ながらプログラムを確認すると、理解しやすいですね。
業務システムの基本となるのは、データの追加、削除、更新、印刷ですので、ここまで学んだことで基本は習得できています。(Accessは更新は自動で行われます。)
実務で使う時にはもうちょっと処理を加えたほうが良いです。例えば1件もレコードが無い時は印刷しないとか。
とりあえずAccessで業務システムを作るということが、どんなものか掴めたのではないでしょうか。