企業研修講師派遣のBESTグループ
出張パソコン教室ITスクール
webコンサルティングスクール
パソコンの家庭教師BEST
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で業務システムを作るということが、どんなものか掴めたのではないでしょうか。
Q:Accessプログラムの動作確認について教えてください。
テーブル、レポート、フォーム、VBAが正しく動くか確認してみましょう。
プログラミングにエラーは付きものです。修正すればよいだけですので焦らずに。途中でエラーがでたらVBAを確認しましよう。エラーの大半はスペルミスや、フォームで部品の名前を間違えたために起こります。
———————————————————————-
1.Accessのファイルを起動します。
2.画面が開きますので、オブジェクトの「フォーム」を選択します。
3.「開く」をクリックし、フォームを実行します。
4.フォームが開いたら、「新規」をクリックします。
5.最後の行に新規レコードが追加されました。
6.データを入力します。
*入力する時、次のことを確認してください。
・商品名や単価を確定した瞬間に一番下の空白行が消える。つまり続けて新しいレコードは入力できない。
7.今入力したレコードを選択し、「削除」をクリックします。
8.削除確認のメッセージボックスが表示されます。
9.「はい」をクリックすると、選択したレコードが削除されます。
*「いいえ」をクリックすると、何もせずに元のフォームに戻りますので、試してください。
10.今度は「印刷」をクリックします。
11.印刷確認のメッセージボックスが表示されます。
12.「はい」をクリックすると、印刷プレビューが表示されます。
*「いいえ」をクリックすると、何もせずに元のフォームに戻りますので、試してください。
13.レポートを確認したら「×」をクリックし、レポートを閉じておきます。
上手く動きましたか?これで動作確認を終了します。次は動作とプログラムの関係を見ていきましょう。
Q:Accessのプログラミングについて、簡単に説明してください。
Accessはフォームやレポートで、VBA(Visual Basic for Application)を使ってプログラミングができます。これからフォームにプログラムを書く手順を説明します。
*今回の目標は、「プログラムを書いてみる。」ということです。
まずは動かしてみることに集中してください。
初めは動きを見てから、次にプログラムの意味を考えたほうが理解しやすいです。その逆だとかなり苦労します。
この段階では、プログラムが何を意味しているかわからなくてかまいません。そのためあえてプログラムの意味は省略しました。意味は次回にまとめて解説します。
———————————————————————-
1.Accessのファイルを起動します。
2.画面が開きますので、オブジェクトの「フォーム」を選択します。
3.ツールバーから「コード」をクリックします。
4.VBAの画面が開きました。この画面にプログラムを書いていきます。
5.まず図のように先頭に入力します。
6.次に左のコンボボックスから「Form」、右のコンボボックスから「Load」を選択します。
7.するとFormLoad(フォームを読み込んだ時)に動くプログラムを書く場所ができました。Accessのプログラミングでは、「○○を□□した時」というようにコンボボックスで選択します。
8.「Private Sub Form_Load()」から「End Sub」がプログラムの単位です。この2行は自動で表示されますので、その間に3行プログラムを書きます。
書いている途中で、入力を助けるリストが表示されますので選択します。見た目より書く量は少ないと感じるはずです。
9.同じ要領で2つのコンボボックスで場所を作り、以下のようにプログラムを完成させましょう。(英数字や記号は半角、その他は全角です)
Option Compare Database
Option Explicit
Dim Res As Variant
Private Sub Form_Load()
Me.AllowAdditions = False
Me.AllowDeletions = False
DoCmd.SetWarnings False
End Sub
Private Sub 印刷_click()
Res = MsgBox(“印刷してよろしいですか?”, vbYesNo, “印刷の確認”)
If Res = vbYes Then
DoCmd.OpenReport “R01商品マスター”, acViewPreview
Else
End If
End Sub
Private Sub 削除_Click()
If MsgBox(“削除します。よろしいですか?”, vbOKCancel, “確認”) = vbOK Then
Me.AllowDeletions = True
On Error GoTo err_削除_click
DoCmd.RunCommand acCmdDeleteRecord
Me.AllowDeletions = False
Else
End If
Exit Sub
err_削除_click:
MsgBox Err.Description
End Sub
Private Sub 商品名_AfterUpdate()
Me.AllowAdditions = False
End Sub
Private Sub 新規_Click()
Me.AllowAdditions = True
DoCmd.GoToRecord acDataForm, “F01商品マスター”, acNewRec
Me.商品名.SetFocus
End Sub
Private Sub 単価_AfterUpdate()
Me.AllowAdditions = False
End Sub
9.完成したらツールバーの「保存」をクリックして、VBAは閉じておきます。
———————————————————————-
どうですか?プログラムの意味はひとまず置いておいて、書くこと自体はそれほど難しくないですね。ここが大事です。
とりあえず書いてみる→動かしてみる→理解する
次回に動作を確認したあと、プログラムを解説します。
Q:Access(アクセス)で、フォームを作る方法を教えてください。
Accessのフォームの作り方は、レポートの手順とほとんど同じです。レポートが印刷に使われるのに対して、フォームは主にデータ入力画面に使われます。フォームも1つのテーブルから、用途に合わせて何種類も作れます。
それではフォームを作成してみましょう。
———————————————————————-
1.前回作成したAccessのファイルを起動します。
2.画面が開きますので、オブジェクトの「フォーム」を選択し、「新規作成」をクリックします。
3.新規作成の画面が開きますので、図のように「フォームウィザード」を選択し、基になるテーブルを選び、「OK」をクリックします。
4.フォームで表示したいフィールド(列)だけを選択できます。フィールドを選択し「>」ボタンを押すと、右側に移動します。右側に移動したフィールドがフォームで表示されます。最後に「次へ」をクリックします。
5.フォームのレイアウトに「表形式」を選択し、「次へ」をクリックします。
6.スタイルでいろんなデザインを選択できます。今回は「標準」を選択し、「次へ」をクリックします。
7.フォーム名を入力し、「完了」をクリックします。
9.フォームができました。でも使いやすいようにもう少し手を加えます。
10.ツールバーの「デザインビュー」をクリックすると、フォームのデザインが編集できます。
11.フォームヘッダーのラベルと、詳細のテキストボックスの、大きさや配置を調整します。縦と横の定規を目安にしてください。
12.ボタンを配置する場所を作ります。フォームフッターをマウスで図のように下に広げます。
13.ツールバーの「ツールボックス」をクリックすると、ツールボックスが表示されます。
14.ツールボックスのウィザードをオフにした後、コマンドボタンをオンにします。
15.図のようにフォームフッターにコマンドボタンを配置します。
16.コマンドボタンをダブルクリックすると、コマンドボタンのプロパティ(属性設定画面)が開きます。「すべて」のタブをクリックし、「名前」と「標題」の両方に「新規」と入力します。設定が終わったら、プロパティを閉じます。
これでこのコマンドボタンの名前は「新規」となりました。
名前:プログラムで使いますので間違わないように注意します。
標題:画面上の表示用に使います。名前と違ってもOKですが、今回は混乱を避けるため同じにしました。
17.同じ手順で「削除」、「印刷」のコマンドボタンを作成します。名前と標題の変更をお忘れなく。それぞれ削除、印刷と付けてください。
18.フォーム左上隅の黒い四角をダブルクリックすると、フォーム自体のプロパティが開きます。
プロパティが開いたら、スクロールバーを「垂直のみ」、移動ボタンを「いいえ」に設定します。設定が終わったらプロパティを閉じます。
19.「開く」をクリックすると、フォームがフォームビュー(実行画面)で開きます。どうですか?システムっぽくなってきましたね。
20.デザインとフォームビューを切り替えながら、微調整してください。
21.編集が終わったら保存して、フォームを閉じておきます。
Q:Accessで、レポートを作る方法を教えてください。
テーブルを基にレポート(帳票)を作成します。Accessはデータを表示するために、フォームかレポートを使う必要があります。
一見面倒なようですが、1つのデータから、用途に合わせて何種類もの帳票が作れるのでとても便利です。エクセルだと帳票ごとにデータを保存する必要があります。
1.Accessのファイルを起動します。
2.画面が開きますので、オブジェクトの「レポート」を選択し、「新規作成」をクリックします。
3.新規作成の画面が開きますので、図のように「レポートウィザード」を選択し、基になるテーブルを選び、「OK」をクリックします。
4.レポートで表示したいフィールド(列)だけを選択できます。フィールドを選択し「>」ボタンを押すと、右側に移動します。右側に移動したフィールドがレポートで表示されます。最後に「次へ」をクリックします。
5.グループレベルを指定せずに「次へ」をクリックします。
6.並べ替えも指定せずに「次へ」をクリックします。
7.印刷形式は、レイアウトに「表形式」、印刷の向きに「縦」を選択し、「次へ」をクリックします。
8.スタイルでいろんなデザインを選択できます。選択し、「次へ」をクリックします。
9.レポート名に入力し、「完了」をクリックします。
10.これでレポートが完成しました。
11.ツールバーの「デザインビュー」をクリックすると、レポートのデザインが編集できます。
12.編集したら保存して、レポートを閉じておきます。
ウィザードを使わずに、ゼロからラベルやテキストボックスを配置しても同じようなレポートが作れますが、今回は省略します。まずシステムとして動かしてみることに力を入れたいと思います。
123...4次の記事を見る Page 1 of 4