メインフォームの形式を選択します。

(6) メインフォームの形式を選択します。
① [by 部活動一
覧]が選択され
ていることを確
認する
② サブフォームがあるフォ
ーム]が選択されているこ
とを確認する
③ 次へ(N) をクリック
(7) サブフォームのレイアウトは,[データシート]が選択されていることを確認したら, 次へ(N) ボ
タンをクリックします。
(8) フォームのスタイルは[Office]を選択して, 次へ(N) ボタンをクリックします。
(9) メインフォーム名に「F 部活動一覧メイン」,サブフォーム名に「F 生徒個人情報サブ」と入力して,
完了(F) ボタンをクリックします。
(10) メイン/サブフォームが作成されます。
【部活動一覧】テーブルのレコードが表
示されていることを確認します。
【生徒個人情報】テーブルのレ
コードが表示されています。
◆ 演習 ◆
フォームビューでサブフォームの列幅を見やすく調整しましょう。
デザインビューに切り替えて,メインフォームのテキストボックスのサイズを変更しましょう。
44
45
5.3.4
メイン/サブフォームを操作する
メイン/サブフォームを操作して,メインフォームのレコードを移動すると,それに伴ってサブフ
ォームのレコードも関連するレコードに移動することを確認しましょう。
(1) メインフォームのレコードを移動します。
メインフォームの[次のレコード]をクリックすると,
2件目のレコードが表示されます。
(2) メインフォームに連動してサブフォームのレコードが移動したことを確認します。
◆ 演習 ◆ 同様の方法で完成例を参考にして,メイン/サブフォームを作成してみましょう。
フォームの種類
メインフォーム
サブフォーム
基になるテーブル
使用するフィールド
フォーム名
【生徒個人情報】テーブル
学籍番号,年,組,番,氏
F 生徒個人情報メイン
名
【成績管理】テーブル
成績管理 ID,学籍番号,学
期,テスト種別,現国,古
F 成績管理サブ
文,地理,歴史,数学Ⅰ,
数学Ⅱ,化学,生物,英語
メインフォーム
サブフォーム
46
第 6 章
6.1
レポート
レポートについて
レポートは,テーブルやクエリのレコードを,レイアウトを整えて印刷するためのデータベースオブジ
ェクトです。新規にレポートを作成するには,主に次の2つの方法があります。
 レポートウィザード
レポートウィザードを利用すると,レポートに含めるフィールドを指定したり,レイアウトやスタイル
などを選択したりしながら対話型でレポートを作成することができます。
 オートレポート
オートレポートを利用すると,テーブルやクエリを選択するだけで,レポートを簡単に作成することが
できます。
6.2
【R 学習の記録】レポートを作成する
【Q 学習の記録】クエリを基に,
【R 学習の記録】レポートを作成しましょう。
(1) [校務処理 5 章.mdb]ファイルを閉じて,[校務処理 6 章.mdb]を開きます。
(2) 【Q 学習の記録】クエリをデザインビューで開き,レポートを作成するために必要な{年齢}フィー
ルドの追加と,[抽出条件]を設定しましょう。
③「年齢:Datediff("yyyy",[生年月日],Date())」
と入力
① {年}フィールドの[抽出条
件]に「3」と入力
② {生年月日}フィールドの右側に新しいフィール
ドを挿入する。
※{性別}を選択して,リボン「デザイン」タブの列の挿入
(3) [実行]ボタンをクリックして実行結果を確認したら,[上書き保存]をしてクエリを閉じます。
47
レポートのオブジェクトに切り替えて,リボン「作成」-「レポート」から[レポートウィザード]ボタ
ンをクリックします。
(4) レポートの基になるテーブル/クエリを選択し,レポートに含めるフィールドを選択します。
① [クエリ:Q 学習の記
録]を選択
② 全フィールドを追
加
③ 次へ(N) をクリック
(5) グループレベルの指定は行う必要がないため,グループレベルを解除します。
① 今回はグループレベル
の指定は行わないので,
{学籍番号}をダブルク
リックしてグループレ
ベルを解除する
② 次へ(N) をクリック
(6) 並べ替えを行うフィールドを指定します。
① 並べ替えを行うフィールドに{学籍
番号}の[昇順]を指定する
② 次へ(N) をクリック
(7) レイアウトは[単票形式]を選択して, 次へ(N) ボタンをクリックします。
(8) スタイルは[Office]を選択して, 次へ(N) ボタンをクリックします。
(9) レポート名に「R 学習の記録」と入力し, 完了(F) ボタンをクリックします。
(10) 印刷プレビューで結果を確認します。
48
6.3
レポートの編集
完成した【R 学習の記録】をデザインビューで編集しましょう。
(1) 全てのページにタイトル「学習の記録」が表示されるように,[レポートヘッダー]にあるタイトル
「R 学習の記録」を[ページヘッダー]に移動します。
② [レポートヘッダー]のタイトルを[ペ
ージヘッダー]へ移動
① [ページヘッダ
ー]を表示する
③ タイトルを「学習の記録」に変更し,フォ
ントサイズなどを調整する(任意)
④ [レポートヘッダー]を非表示にする
(2) 完成例を参考に,テキストボックスなどのコントロールを見やすく調整します。
完成例
Point! 作成時のアドバイス
Access2007 からフォームやレポートの項目が表または集合形式になっているため,リボン「配置」-「レ
イアウトの調整」から「解除」をクリックし,コントロールを一つ一つ移動できる状態にしてから,レイ
アウトの変更を行います。複数のコントロールを選択し,リボン「配置」-「位置」から[左右の間隔]ボ
タン,[上下の間隔] ボタンなどを使用してください。
(3) 修正後,上書きし「R 学習の記録」を閉じてください。
49
Point! 罫線を活用して見やすいレポートを作成する
罫線を効果的に活用すると,見やすいレポートを作成することができます。罫線は,境界線プロパティ
の設定や直線コントロールなどを使用して,いろいろな種類のものを作成することができます(完成例【R
学習の記録(罫線使用)
】を参考にしてください)
。
◆ デザインビューからレポートを作成する方法
(1) リボン「作成」→「レポート」から[レポートのデザイン]ボタンで新規作成します。
(2) [ページヘッダー]にタイトル「学習の記録」と入力します([ラベル]使用)
。
リボン【デザイン】タブの
コントロールを利用
(3) [ページフッター]は使用しないため,非表示にします。
(4) [詳細]セクションの幅を[19],高さ[23]を目安にして広げます。
[直線]コントロールを
使用する
(5) [詳細]セクションに[直線]コントロールを使用して表を作成します。
(6) [レポートセレクタ]を選択し,[プロパティ]シートを表示します。
(7) [データ]タブの[レコードソース]から[Q 学習の記録]を選択します。
②[プロパティ]シート
を表示
③[データ]タブをクリ
ック
①[レポートセレク
タ]をクリック
④[レコードソース]から
[Q 学習の記録]を選択
(8) 実際に表示したいデータのフィールドは,[フィールドリスト]から配置したい場所へドラッグしま
す(リボン「デザイン」-「ツール」から[既存のフィールドの追加]ボタン)
。
(9) 一覧にない項目は,[ラベル]や[テキストボックス]を使用します。
(10) 書式を変更する場合は,コントロールを選択し,プロパティシートの[書式]タブで変更します。
②[プロパティ]の
[書式]タブで変
更を行う
①コントロールを選択
リボン「デザイン」タブの「既存のフィール
ドの追加」をクリックし,フィールドリス
トを表示させます。
(11) 印刷プレビューでレイアウトを確認しながら,きれいに仕上げます。
(12) レポートに名前を付けて保存します。
50
◆ 完成見本
[印刷プレビュー]
[デザインビュー]
51
◆ 演習 ◆ 完成例を参考に,中間/期末テストの順位を印刷するためのレポートを作成しましょう。
完成例
【R 成績順位】
Point! 作成時のアドバイス
(1) 基になるデータには【Q 成績管理パラメータ】クエリを使用します。
(2) フィールドは,{学籍番号}{年}{組}{番}{氏名}{学期}{テスト種別}{現国}{古文}{地理}{歴史}{合計
点}を使用します。
(3) ウィザードの設定の中で,並べ替えの指定を行います。({合計点}フィールドの[降順])
(4) [レポートヘッダー]のタイトルを「テスト結果」に変更します。
(5) {順位}のフィールドは自分で作成します。
① [ページヘッダー]に
[ラベル]を追加し,
「順
位」と入力
③ [プロパティ]シートを
表示し[データ]タブを
クリック
④ [コントロールソー
ス]に「=1」と入力
⑤ [集計実行]から[全
体]を選択
② [詳細]セクションに[テキストボックス]
を追加する
(6) [詳細]セクションの{年}{学期}{テスト種別}テキストボックスと,[ページヘッダー]セクションの
{年}{学期}ラベルを[レポートヘッダー]セクションに移動し({テスト種別}ラベルは不要なので削除),
見やすく整えます。
(7) [詳細]セクションの各コントロールのサイズ変更や移動を行い1ページに収めます。
(8) 印刷プレビューに切り替える際にパラメータが表示されるので,
「年」
「学期」
「テスト種別」を入力
します。
(9) レポートに「R 成績順位」という名前を付けて保存します。
52
第 7 章
7.1
マクロ
マクロとは
マクロを使うと,いろいろな作業を自動化することができます。マクロを使って操作を自動化すること
により,複雑な操作や日常業務で繰り返し行う操作が,効率よく処理できるようになります。
例えば,
「校務処理.mdb に,生徒の個人情報,成績,出欠状況などを入力し,調査書として印刷する業
務」を行う場合,Access の操作手順は次のようになります。
① Access を起動する
④ 成績情報の登録を行う
↓
↓
② [校務処理.mdb]データベースを開く
⑤【R 調査書】をプレビューする
↓
↓
⑥【R 調査書】を印刷する
③【F 成績管理メイン】入力用フォームを
開く
Access の操作に慣れていない人が,これらの操作を一から覚えるのは大変です。成績の情報を入力する
にはどの画面で行うのか,
【R 調査書】を印刷するには何をすればよいか,など迷う可能性があります。
そこで,初心者でもすぐに使える操作専用のフォームを作成しておけば,ボタンをクリックするだけで
操作が開始できるような構成のデータベースに仕上げることができます。
マクロは実行したい一連の動作(アクション)で構成されています。いろいろなマクロを組み合わせる
と,Access で簡単なデータ管理システムを構築することができます。
(完成例)
【F メインパネル】フォーム
① クリックすると【F 成績管理メイン】
フォームが開き,成績の登録ができる。
② クリックすると,
【Q 調査書用】が開き,必
要な抽出条件の変更ができる。
③ クリックすると【R 調査書】がプレビュー
される。
④ 成績順位に並べ替えた印刷プレビューが
表示される。
53

マクロウィンドウ
マクロは,マクロウィンドウ(マクロのデザインビュー)で作成,編集します。マクロウィンドウで
[アクション]とその[引数]を設定し,マクロを作成します。
[アクション]列
[引数]列
[コメント]列
アクションの引数

アクション
1 つのアクションは,マクロの中で実行される1つの独立した処理です。マクロウィンドウに記述さ
れたアクションは上から順に実行されます。アクションは,マクロウィンドウの[アクション]列に表
示される一覧から選択します。ほとんどのアクションでは,そのアクションをどのように実行するか
を補足する引数の設定が必要です。

アクションの引数
アクションを実行するために必要な情報を[引数]と呼びます。例えば,[フォームを開く]というアク
ションでは,開く対象となるフォーム名を引数として指定する必要があります。
マクロウィンドウでアクションを選択すると,そのアクションの引数がマクロウィンドウの下側に表
示されます。アクションによって引数の内容は異なり,省略可能なものもあります。

コメント
マクロウィンドウの[コメント]列には,設定したアクションがどのような処理を行っているかなど,
コメントを入力します。作成済みのマクロを編集するときに役立ちます。
Point! よく使われる代表的なアクション
アクション名
フォームを開く
レポートを開く
閉じる
終了
メッセージボックス
サイズ変更
フィルタの実行
印刷
コントロールの移動
マクロの実行
レコードの検索
機
能
引数で指定するフォームを開く
引数で指定するレポートを開く
引数で指定するオブジェクトを閉じる
Access を終了する
メッセージを表示する
オブジェクトの位置と大きさを設定する
指定した条件を満たすレコードを抽出します
指定したオブジェクトを印刷します
指定したコントロールにフォーカスを移動します。
指定したマクロを実行します。
指定した条件を満たすレコードを検索します。
54
7.2
マクロを作成する
【F 成績管理メイン】フォームを開くマクロを作成し,
「成績管理フォームを開く」というマクロ名
で保存しましょう。
(1) [校務処理 6 章.mdb]ファイルを閉じて,[校務処理 7 章.mdb]ファイルを開きます。
(2) マクロを新規作成します。
リボン「作成」タブの[マ
クロ]を選択
(3) アクションとアクションの引数を設定します。
① アクションから[フォ
ームを開く]を選択
② フォーム名から[F 成
績管理メイン]を選択
③ ビューの種類に[フォームビュー]
と表示されていることを確認
(4) 名前を付けて保存します。
① [ 上書き保
存]ボタンを
クリック
③
② 「成績管理フォームを開く」と入力
(5) 【成績管理フォームを開く】マクロウィンドウを閉じます。
55
OK をク
リック
7.3
マクロを実行する
作成したマクロは,いくつかの方法で実行することができます。
7.3.1
ナビゲーションウィンドウから実行する
ナビゲーションウィンドウから,
【成績管理フォームを開く】マクロを実行しましょう。
(1) マクロを実行します。
③「成績管理フォ
ームを開く」を
ダブルクリック
① ナビゲーショ
ンウィンドウの
▼ボタンをクリ
ック
ナビゲーションウィンドウが
マクロ表示になります。
② 「マクロ(S)」
をクリック
(2) 【F 成績管理メイン】フォームが開くことを確認したら,フォームを閉じます。
Point!
A)
マクロの実行について(その他の方法)
実行したいマクロをデザインビューで開き,リボン「デザイン」-「マクロツール」から[実行]ボ
タンをクリック
7.3.2
イベントに割り当ててマクロを実行する
マウスによるクリックやキー操作,データの更新など,オブジェクトによって認識される出来事で,応
答方法が指定できる操作を[イベント]といいます。
Access でのプログラミングを簡単にするために,いろいろなイベントが用意されています。主なイベン
トは,次のとおりです。
 フォームやレポートのイベント
・フォームを開くとき
・フォームを閉じるとき
・レコードを移動するとき
 コントロールのイベント
・コントロールがフォーカスを取得したとき
※ フォーカスとは,そのコントロールが選択
・コントロールがフォーカスを失ったとき
されている状態であることを意味します。
・データが更新されたとき
56
 イベントにマクロを割り当てる
イベントにマクロを割り当てると,フォームやコントロールなどでイベントが発生したときに,マクロ
を実行することができます。
<マクロをイベントに割り当てる方法>
A)
あらかじめ作成したマクロをイベントに割り当てる
① マクロウィンドウでマクロを作成する
② フォームやコントロールのプロパティシートを表示して,
[イベント]タブの目的のイベントに実行す
るマクロ名を割り当てる。
B)
イベントからマクロビルダを選択してマクロを作成する
① フォームやコントロールのプロパティシートを表示して,[イベント]タブの目的のイベントの[ビル
ド]ボタンをクリックする。
② [ビルダの選択]ダイアログボックスで[マクロビルダ]を選択する。
③ マクロウィンドウで,マクロを作成する。→マクロを保存すると,選択したイベントにマクロが割り
当てられる。
マクロビルダを選択して,
【F 成績管理メイン】フォームの{氏名}ボックスをダブルクリックすると,
【F 生徒情報検索】フォームが開くようにマクロを作成しましょう。
(1) ナビゲーションウィンドウの[フォーム]を選択し,フォームの一覧を表示します。
(2) 【F 成績管理メイン】フォームをデザインビューで開きます。
(3) {氏名}テキストボックスのプロパティシートを表示します。
② プロパティシー
トを表示
※ F4 キーを押して
も表示できます
③ [イベント]タブをクリック
① {氏名}テキストボッ
クスを選択
(4) [ビルダの選択]ダイアログボックスを開きます。
③ [マクロビルダ]を
選択
④
① [ダブルクリック時]ボック
スをクリック
② [ビルド]ボタ
ンをクリック
57
OK をクリ
ック
(5) アクションと引数を設定します。
① [フォームを開く]アクション
を選択
② [F 生徒情報検索]フォーム
を選択
③ [フォームビュー]と表示されてい
ることを確認
(6) リボン「デザイン」-「閉じる」から[名前を付けて保存]ボタンをクリックしてマクロ名「生徒名
確認用」と入力します。
(7) 【生徒名確認用】マクロウィンドウを閉じます。下記メッセージが表示されたらはい(Y)ボタンを
クリックします。
(8) プロパティシートの[ダブルクリック時]ボックスに,マクロ名[生徒名確認用]が割り当てられたこ
とを確認します。
(9) プロパティシートを閉じます。
(10) 【F 成績管理メイン】フォームをフォームビューに切り替え,{氏名}ボックスをダブルクリックし,
【F 生徒情報検索】が開くことを確認します。
「F 生徒情報検索」フォームが
表示されます。
「氏名」テキストボックスを
ダブルクリック
(11) マクロの動作確認ができたら,
【F 生徒情報検索】フォームを閉じます。
58
7.3.3
Where 条件式を利用する
フォームに表示するレコードを制限するには,[フォームを開く]アクションの引数に[Where 条件式]を
設定します。Where 条件式には,表示するレコードを制限するための式などを記述します。
レポートを開く場合も,[レポートを開く]アクションの引数に[Where 条件式]を設定することで,表
示するレコードを制限することができます。
 レコードを制限する構文
構文:[テーブルまたはクエリ名]![フィールド名]=Form![フォーム名]![コントロール名]
①
②
① 開くフォームの基になるテーブルまたはクエリのフィールド名を指定します。
② レコードの制限をするフォームのコントロール名を指定します。
【F 成績管理メイン】フォームの{氏名}フィールドの値と一致する【F 生徒情報検索】フォームを
表示するように Where 条件式を指定しましょう。(例:「中村 淳子」の{氏名}フィールドをダブルクリッ
クすると,「中村 淳子」の【F 生徒情報検索】フォームが表示される)
(1) 【F 成績管理メイン】フォームをデザインビューに切り替えます。
(2) {氏名}フィールドのプロパティシートを表示し,マクロウィンドウを開きます。
② プロパティシー
トを表示
③ [イベント]タブをクリック
④ 「ビルド」ボタンをクリック
① {氏名}テキストボッ
クスを選択
(3) 【生徒名確認用】マクロのマクロウィンドウが表示されたことを確認します。
(4) 式ビルダを起動します。
[Where 条件式]ボックスの[ビル
ド]をクリックすると,[式ビル
ダ]が起動します。
59
(5) 基になるテーブルとフィールド名を指定します。
④ 参照するテーブル名と
フィールド名が指定さ
れます。
① [テーブル]の
[展開]ボタンをダブ
ルクリックして展開
② [生徒個人情報]を選
択
③ [氏名]をダブルク
リック
(6) レコードの制限をする,フォームのコントロール名を指定します。
① 「=」をクリック
⑥ レコードの制限をする,フォ
ームのコントロール名が指
定されます。
② [フォーム]の
[展開]ボタンをダブ
ルクリックして展開
③ [読み込まれたフ
ォーム]の[展開]ボ
タンをダブルクリ
ックして展開
⑤ [氏名]をダブルク
リック
④ [F 成績管理メイン]を選択
(7) 「[生徒個人情報]![氏名] =Forms![F 成績管理メイン]![氏名]」という式が作成されたことを確認
し, OK ボタンをクリックします。
(8) マクロウィンドウの[Where 条件式]ボックスに,式が表示されていることを確認します。
(9) Office ボタン[上書き保存]を選択後,マクロを上書き保存します。
(10) 【生徒名確認用】マクロウィンドウを閉じます。
(11) プロパティシートを閉じます。
(12) Office ボタン[上書き保存]を選択後,フォームを上書き保存します。
(13) 【F 成績管理メイン】フォームをフォームビューに切り替えます。
(14) {氏名}フィールドをダブルクリックして,
【生徒名確認用】マクロの動作を確認します。
60
(確認例)
③ {氏名}フィールドをダブルクリックすると,
「池田 薫」の【F 生徒情報検索】フォームが
開くことを確認します。
②「池田 薫」のレコード
が表示されます。
① 10レコード目に移動
(15) 【F 生徒情報検索】フォームを閉じます。
(16) 【F 成績管理メイン】を閉じます。
Point! 引数に Where 条件式が使用されるアクション
1. [フォームを開く]アクション
2. [レポートを開く]アクション
3. [フィルタの実行]アクション
7.4
メインパネルを作成するには
無地のフォームにコマンドボタンを配置して,
データベース起動時に表示する[メインパネル]または[メ
インメニュー]と呼ばれる操作パネルを作成することができます。
操作パネルのボタンをクリックするだけでいろいろな作業ができるように設定しておくと,Access の操
作に慣れていない初心者でも,簡単にデータベースを使用することができます。
 操作パネルの作業手順(本テキストでの手順)
① マクログループを作成する
② フォームを作成する
③ コマンドボタンを作成する
④ コマンドボタンにマクロを割り当てる
⑤ 起動時の設定をする
61
7.4.1
マクログループを作成する
マクロオブジェクトの数が多くなると,管理が煩雑になります。多くのマクロを作成する場合は,関連
するマクロを 1 つの[マクログループ]として作成し保存すると,まとめて管理することができます。
マクロをグループとして管理するには,マクロウィンドウに複数のマクロを作成して,1 つのマクロオ
ブジェクトとして保存します。これを[マクロウィンドウ]と呼びます。
マクログループを作成するには,マクロウィンドウ内の 1 つ 1 つのマクロを区別できるように,個別の
マクロ名を付ける必要があります。
マクロ名は,
マクロウィンドウに[マクロ名]列を表示して入力します。
フォームを開くマクロ,クエリを開くマクロ,およびレポートをプレビューするマクロを作成して,
マクログループとして保存しましょう。
(1) マクロオブジェクトに切り替え,マクロを新規作成します。
(2) マクロ名列を表示します。
① [マクロ名]ボタンをクリック
② [マクロ名]列が表示されます。
(3) 1行目の[マクロ名]列に,1つ目のマクロ名「F 成績管理メインを開く」と入力し,アクションと
引数の設定をします。
① マクロ名に
「F 成績管理メ
インを開く」と
入力
② [フォームを開
く]を選択
③ フォーム名に,[F 成績管
理メイン]を選択
④ [フォームビュー]と表示さ
れていることを確認
(4) 3行目の[マクロ名]列に,2つ目のマクロ名「Q 調査書用クエリを開く」と入力し,アクションと
引数の設定をします。
② 3行目の[アクション列]か
ら[クエリを開く]をクリッ
ク
① マクロ名に
「Q 調査書用ク
エリを開く」と
入力
③ [クエリ名]ボックスから[Q
調査書用]を選択
④ [ビュー]ボックスから
[デザインビュー]を選択
62
(5) 5行目の[マクロ名]列に,3つ目のマクロ名「R 調査書のプレビュー」と入力し,アクションと引
数の設定をします。
② 5行目の[アクション
列]から[レポートを開
く]をクリック
① マクロ名「R 調査
書のプレビュー」
と入力
③ [レポート名]ボックス
から[R 調査書]を
選択
④ [ビュー]ボックスから[印
刷プレビュー]を選択
(6) Office ボタン[上書き保存]を選択後,マクログループ名に「メインパネル用」と入力して保存しま
す。
(7) 【メインパネル用】マクロウィンドウを閉じます。
Point! マクロ名の空白行
マクログループを作成するときは,マクロの間に,1行空白を設定すると管理しやすくなります。
7.4.2
メインパネル用フォームを作成する
メインパネルはデータベースが開いたときに最初に表示されるフォームで,ロゴやタイトル,コマンド
ボタンなどから構成されています。メインパネルを作成するときは,処理の流れを考えた上で,効率よく
作業が行えるように設計する必要があります。
メインパネルを作成するには,デザインビューで無地のフォームを作成して,メニューになるようコマ
ンドボタンを配置します。
無地のフォームを新規作成し,
「F メインパネル」という名前で保存しましょう。
(1) 無地のフォームを作成します。
リボン[作成]タブの「フォー
ムデザインをクリック
(2) 無地のフォームが表示されたことを確認します。
無地のフォームが
作成されます。
(3) Office ボタン[上書き保存]を選択後,フォーム
に「F メインパネル」という名前を付けて保存しま
す。
63
7.4.3
コマンドボタンにマクロを割り当てる
クリックすると,マクロが実行されるボタンを[コマンドボタン]といいます。マクロをコマンドボタン
のイベントに割り当てて実行すると,
目的のフォームやレポートを開いたり閉じたりする手段となります。
【F メインパネル】フォームに,3つのコマンドボタンを作成してマクロを割り当てましょう。
(1) フォームの領域を縦方向に広げます。(垂直ルーラー「5」を目安に
の形でドラッグ)
(2) コマンドボタンを作成します。
① [コマンドボタン]を
クリック
②水平ルーラー「3」
,垂直ルーラー「1」
の位置を目安に
の形でクリック
(3) コマンドボタンの標題を変更します。
② プロパティシ
ートを表示
① コマンドボタンが
選択されていること
を確認
③ [書式]タブをク
リック
④ [標題]ボックスに「成績情報
を入力」と入力します。
(4) マクロをイベントに割り当てます。
① [イベント]タブをク
リック
② [クリック時]ボックスから[メイ
ンパネル用.F 成績管理メインを開
く]を選択
(5) 同様の手順で,[成績情報を入力]コマンドボタンの下に2つのコマンドボタンを作成し,次のよう
に[標題]プロパティと[クリック時]プロパティを設定します。
[標題]プロパティ
[クリック時]プロパティ
調査書に必要な項目を設定
メインパネル用.調査書用クエリを開く
印刷前に調査書をプレビュー
メインパネル用.調査書のプレビュー
(6) コマンドボタンの位置やサイズ調整,フォントサイズなどを変更して使いやすい状態に整えます。
64
(7) プロパティシートを閉じます。
(8) Office ボタン[上書き保存]を選択後,フォームを上書き保存します。
【F メインパネル】フォームの 3 つのコマンドボタンの動作を確認しましょう。
(1) 【F メインパネル】フォームをフォームビューに切り替えます。
(2) [成績情報を入力]コマンドボタンをクリックし,
【F 成績管理メイン】がフォームビューで開くこ
とを確認します。確認ができたら,
【F 成績管理メイン】フォームを閉じます。
(3) 同様に,[調査書に必要な項目を設定]ボタンと[印刷前に調査書をプレビュー]ボタンの動作を確認
します。
(4) 3つのボタンが正しく動作することが確認できたら,
【F メインパネル】フォームを閉じます。
65
7.4.4
MsgBox 関数を利用する
MsgBox 関数は処理を実行する際に,OK や キャンセル などのボタンを含むメッセージボックスを表
示させる関数です。ボタンをクリックすることで,ボタンの種類に応じた整数値(決められた値)を返し
ます。
[校務処理 7 章.mdb]データベースを終了する際に,終了確認のメッセージボックスが表示されるよ
うにマクロを作成し,
【F メインパネル】にコマンドボタンを追加しましょう。
(1) ナビゲーションウィンドウの[マクロ]から,【メインパネル用】マクロをデザインビューで開きま
す。
(2) リボン「デザイン」-「表示/非表示」から[条件]ボタンをクリックし,[条件]列を追加します。
(3) 7行目に[マクロ名],[条件],[アクション]の設定を行います。
マクロ名
条件
アクション
校務処理を終
MsgBox("終了しても良いですか?",1,"終了の確認")=1
了
終了
(オプション)
すべて保存
(4) Office ボタン[上書き保存]を選択後し,【メインパネル用】マクロを上書き保存して閉じます。
(5) [フォーム]オブジェクトに切り替え,【F メインパネル】フォームをデザインビューで開きます。
(6) コマンドボタンを追加し設定を行います。
① コマンドボタンを追加する
② プロパティシートを表示する
③ [書式]タブの[標題]に「校務処理を終了」と入力
する
④ [イベント]タブの[クリック時]から[メインパネ
ル用.校務処理を終了]を選択する
⑤ プロパティシートを閉じる
66
(7) 【F メインパネル】を上書き保存し,フォームビューに切り替えます。
[校務処理を終了]コマンドボタンをクリックし,終了できることを確認します。
クリックすると,[校務処理 7
章.mdb]が上書き保存され終了
する
クリックすると,終了作業がキャン
セルされ,
【F メインパネル】に戻る
(8) コマンドボタンの動作確認ができたら,次の操作のために[校務処理 7 章.mdb]を開きます。
Point!
MsgBox 関数について
②表示する
ボタンの種類
①メッセージ
③タイトル
④戻り値
③ タイトル
① メッセージ
② ボタン
① メッセージ
メッセージボックスにメッセージとして表示される文字列を指定します。文字列を入力する場合は,
「”」
(ダブルクォーテーション)で囲みます。
② 表示するボタンの種類
メッセージボックスに表示されるボタンの種類や組み合わせを指定します。
値
1
3
4
メッセージボックスに表示されるボタン
OK,キャンセル
はい,いいえ,キャンセル
はい,いいえ
③ タイトル
メッセージボックスのタイトルバーに表示される文字列を指定します。文字列を入力する場合は,
「”」(ダ
ブルクォーテーション)で囲みます。
④ ボタンの戻り値
メッセージボックスのボタンをクリックすると,整数で値が戻ります。戻り値は,クリックしたボタン
の種類によって異なります。
メッセージボックスに表示されるボタン
OK
キャンセル
はい
いいえ
戻り値
1
2
6
7
67
68
7.5
起動時の設定をする
起動時の設定をすると,データベースを開く時に特定のフォームを開いたり,メニューやツールバーを
非表示にしたりできます。ユーザーが誤ってオブジェクトのデザインを変更してしまうことを防げます。
起動時の設定をしたデータベースを開くと,次の 2 つの項目で設定されていることが自動的に行われま
す。
1. [起動時の設定]ダイアログボックス
2. AutoExec マクロ
両方が設定されている場合は,初めに[起動時の設定]ダイアログボックスの設定が実行され,続けて
「AutoExec」という名前のマクロが実行されます。
[校務処理 7 章.mdb]を開くと,自動的に【F メインパネル】フォームが開き,データベースウィンド
ウが非表示になるように設定しましょう。
(1)
Office ボタンをクリックし,Access のオプションボタンをクリックします。
①[カレントデータベース]
を選択
②「フォームの表示」で
「F メインパネル」を指定
③「ナビゲーションウィンドウを
表示する」のチェックをはずし
ます。
④ OK をク
リック
(2) [校務処理 7 章.mdb]を閉じて,再度開きます。
(3) 【F メインパネル】フォームが表示されたことを確認します。
69
(4) ナビゲーションウィンドウが表示されていないことを確認します。
F11 キーを押すとナビゲーションウィンドウが表示されます。
(5) 【F メインパネル】フォームを閉じます。
Point!
ナビゲーションウィンドウの表示
ナビゲーションウィンドウが非表示になっていたり,他のウィンドウの後ろに隠れていたりする場合に
も, F11 キーを押すと表示されます。
Point! 起動時の設定と AutoExec マクロの回避
データベースを開くときに実行される起動時の設定と AutoExec マクロは, Shift キーを押しながらデ
ータベースを開くことで,無効にすることができます。
◆ 演習 ◆ 作成した【F メインパネル】に,
【R 成績順位】レポートを印刷プレビューするためのコマン
ドボタンを追加しましょう。マクロは,マクログループ【メインパネル用】に追加します。
(P66~,
P68 を参照)
(完成例)
70
第 8 章
8.1
VBA の基礎
VBA の概要
Access では,VBA(Visual Basic for Applications)というプログラム言語を使用することができます。
モジュールは,この VBA を用いて,Access への命令や動作を記述したデータベースオブジェクトです。
マクロを使うと,メッセージボックスを表示したり,一連の処理をボタン1つで実行可能にしたりと,
アプリケーションらしい様々な動作をさせることが可能です。しかし,マクロは,用意された56種類の
アクションしかできない,エラー処理ができないなどの限界もあります。
その限界を超え,より柔軟に Access を操作できるのが VBA です。
しかし,VBA を自在に使いこなすためには,Access に対する理解とプログラミングの知識が必要になり
ます。この章では,モジュールと VBA の基礎知識について学習します。
8.2
マクロを VBA に変換する
Access はマクロを VBA に自動変換する機能をサポートしています。マクロで処理できるところはマクロ
で作成して,その後 VBA に変換し,VBA コードで部分的な変更や処理の追加といった編集作業を行うと効
率的です。
フォームやレポートおよびコントロールのイベントに割り当てられたマクロと,マクロオブジェクトに
登録されている全てのマクロは,VBA に変換することができます。
マクロを VBA に変換すると,次の2つの処理が追加されます。
1. エラー処理コード
2. コメント
8.2.1
グローバルマクロをモジュールに変換する
グローバルマクロとは,特定のオブジェクトに関連付けられていないマクロのことです。
マクロをモジュールに変換すれば,マクロで設定した動作が VBA 形式で記述され,その内容を確認する
ことで,プログラムの仕組みを理解しやすくなります。また,変換されたモジュールを修正すれば,プロ
グラミングを 1 から行う手間を省けます。
[マクロ]オブジェクトから【成績管理フォームを開く】マクロを VBA に変換しましょう。
(1) [校務処理 7 章.mdb]ファイルを閉じて,[校務処理 8 章.mdb]ファイルを開きます。
(2) ナビゲーションウィンドウ[マクロ]から【成績管理フォームを開く】マクロを選択します。
71
(3) リボン「データベースツール」-「マクロ」から[マクロを Visual Basic に変換]をクリックします。
(4) [マクロの変換]ダイアログボックスが表示されます。
② 変換(C) を
クリック
① 2箇所にチェッ
クが入っている
ことを確認
(5) VBE(Microsoft Visual Basic Editor)が起動します。
[マクロを Visual Basic に変換]が表示されたら, OK ボタンをクリックします。
(6) VBE ウィンドウのコードウィンドウに,VBA プログラムが表示されています。
「’
」で始まる行はコメント
① [変換するマクロ:成績
管理フォームを開く]
をダブルクリック
エラー処理
② 変換された VBA プログラム
の内容が表示されたことを
確認します。
(7) メニューバーの[ファイル]-[終了して Microsoft Office Access へ戻る]をクリックします。VBE
が閉じて Access のウィンドウに戻ります。
72
(8) リボン「データベースツール」-「マクロ」から[Visual Basic]をクリックします。
※VBE のウィンドウが起動します。[変換するマクロ: 成績管理フォームを開く]が作成されていることを確認します。
(9) VBE を終了して,Access に戻ります。
8.2.2
イベントマクロをイベントプロシージャに変換
【F メインパネル】フォームのマクロをイベントプロシージャに変換しましょう。
フォームやレポート上のコマンドボタンなどに割り当てられているマクロを,イベントマクロといいま
す。イベントマクロをモジュールに変換すると,そのフォームやレポート上で実行することができるイベ
ントプロシージャになります。
(1) フォームオブジェクトに切り替えて,【F メインパネル】フォームをデザインビューで開きます。
(2) リボン「データベースツール」-「マクロ」の[マクロを Visual Basic に変換]をクリックします。
(3) [フォームマクロの変換]ダイアログボックスの 変換 ボタンをクリックします。
(4) [マクロを Visual Basic に変換]が表示されたら, OK ボタンをクリックします。
73
(5) 【F メインパネル】フォームのデザインビューに戻ります。
(6) [成績情報を入力]コマンドボタンを選択し,右クリックし,[プロパティ]をクリックします。
(7) プロパティシートの[イベント]タブに切り替えます。
① [イベント]タブに切
り替える
③ [ビルド]をクリック
② [クリック時]ボックスに,
[イベントプロシージャ]と表示されている
(8) VBE が起動し,[成績情報を入力]コマンドボタンのイベントプロシージャが表示されます。
(9) メニューバーの[ファイル]-[終了して Microsoft Officde Access へ戻る]をクリックすると,VBE
が閉じて Access のウィンドウに戻ります。
※ イベントマクロをイベントプロシージャに変換すると,
[クラスモジュール]と呼ばれるモジュールにな
ります。
[クラスモジュール]は,
フォームやレポートなどに関連付けられているモジュールのことです。
74
8.3
8.3.1
VBA の編集について
VBE(Microsoft Visual Basic Editor)について
VBA のコードは,VBE ウィンドウで記述や編集を行います。VBE は大きく分けて,コードを記述するため
のウィンドウと,全体を管理するプロジェクトエクスプローラ,各種オブジェクトのパラメータの設定を
行うプロパティウィンドウ,そしてプログラミングやデバッグの手助けをしてくれるツールバーに分ける
ことができます。
①
⑤
④
⑥
②
③
 VBE の名称とその役割
No
名 称
①
②
③
④
⑤
⑥
役
割
プロジェクトやプロジェクトに格納されている全ての項目をツリ
プロジェクトエクスプロー
ー形式で表示します。クラスモジュール,標準モジュールもここに
ラ
表示されます。
プロパティウィンドウ
選択しているオブジェクトのプロパティが表示されます。
コードウィンドウ
モジュールの内容が表示され,コードの記述や変更ができます
選択されているオブジェクト名が表示されます
[オブジェクト]ボックス
特定のオブジェクトに依存しない標準プロシージャと,宣言セクシ
ョンでは「(General)」と表示されます。
[ オ ブ ジ ェ クト ] ボ ッ クス で [(General)] を 選 択し た 時 は ,
[(Declarations)]または標準プロシージャの一覧が表示されます。
[プロシージャ]ボックス
[オブジェクト]ボックスでオブジェクトを選択した場合は,イベン
トの一覧が表示されます。
宣言セクション
モジュールレベルで使用する変数,定数の宣言などを記述します。
75
8.3.2
VBA の基本構成について
 VBA プログラムの構成例
プロジェクト
クラスモジュール(例)
←コード
フォームとモジュールがセ
プロシージャ
ットになっている
標準モジュール (例)
モジュールが単独で存在して
いる
←コード
プロシージャ
プロジェクト
◆ 構成用語

モジュール 1
1 つのデータベースファイルの中にある全てのモジュー
プロシージャ 1-1
ルを管理している,概念的なオブジェクトです。プロジ
コード・・・
コード・・・
プロジェクト
ェクトエクスプローラで確認できます。

モジュール
プロシージャの集まりです。1 つのモジュールの中に,1
コード・・・
つから複数のプロシージャを記述して管理することが
できます。標準モジュールとクラスモジュールの 2 種類
プロシージャ 1-2
プロシージャ 1-3
がある。

プロシージャ
コードが集まったものです。コードは 1 行 1 行では実行
できませんが,プロシージャとしてまとまって定義され
モジュール 2
て,はじめて実行可能になります。1 つの処理を行うこ
とのできる最小の単位が,プロシージャです。
76

VBA その他の基本用語
・ステートメント
プロシージャを構成する単位で,1 つの操作,定義などを記述します。(1行のコードのこと)
・グローバルマクロ
特定のオブジェクトに関連付けられていないマクロ
・イベントマクロ
フォームやレポート上のコマンドボタンなどに割り当てられたマクロ
・標準モジュール
独立したモジュールで,
標準モジュール内に記述された Sub プロシージャや Function プロシージャは,
データベース内の,別のモジュールのプロシージャから呼び出して使用することができます。
・クラスモジュール
特定のフォームやレポートに関連づけられたモジュールで,フォームモジュールとレポートモジュール
があり,それぞれのフォームやレポートに埋め込まれる形で保存されています。
8.3.3
VBA の編集方法
VBA に変換した【F メインパネル】フォームの,イベントプロシージャの内容を変更しましょう。
変更内容:コマンドボタン「校務処理を終了」をクリックしたときに,表示される MsgBox のボタンの
種類を「はい」
「いいえ」に変更します(P.69 参照)。
(1) 【F メインパネル】フォームをデザインビューで開き,[校務処理を終了]コマンドボタンのプロパ
ティシートを表示します。
(2) [イベント]タブに切り替え,[クリック時]の[ビルド]をクリックし VBE を起動させます。
(3) MsgBox の記述を2箇所編集します。
① ボタンの種類を「1」か
ら「4」に変更
② 戻り値を「1」から「6」
に変更
(4) メニューバーの[ファイル]-[終了して Microsoft Access に戻る]をクリックし【F メインパネル】
に戻ります。
(5) 【F メインパネル】フォームをフォームビューに切り替え,[校務処理を終了]コマンドボタンをク
リックし,動作を確認します。
77
第 9 章
9.1
Access の便利な機能
データベースをバックアップする
開いているデータベースを[ファイル]メニューから手軽にバックアップすることができます。
バックアップとして作成されたデータベースは,ファイル名の末尾に日付が自動的に付加されます。
※ Access2002 までのバージョンでは,[ファイル]メニューからバックアップする機能がありません。エクスプローラなどを
使い,データベースファイルをコピーして貼り付ける方法を利用してバックアップを行ってください。
[校務処理 8 章.mdb]を開いた状態でバックアップしましょう。
(1) Office ボタン[管理]-[データベースのバックアップ]をクリックします。
(2) [名前を付けてバックアップを保存する]ダイアログボックスが表示されます。
① 保存先を[Access 応用]フォ
ルダに切り替え
② ファイル名を確認
③ 保存
リック
(3)
ボタンをク
[Access 応用]フォルダの中に,日付の付いたバックアップファイルが作成されたことを確認しま
す。 (例)
[校務処理 8 章_2010-XX-XX.accdb]
9.2
データベースオブジェクトを非表示にする
データベースオブジェクトを一般のユーザーから保護するために非表示にして,データベースウィンド
ウから使用できないようにすることができます。
なお,
データベースオブジェクトを非表示にしても,
マクロやモジュールによる実行には影響しません。
間違って実行されては困る【Q 卒業生削除】クエリを非表示に設定しましょう。
(1) 非表示に設定したい【Q 卒業生削除】クエリを選
択します。
(2) 右クリック[オブジェクトのプロパティ]をクリッ
クします。[Q 卒業生削除のプロパティ]ウィンドウ
の[
]にチェックを入れて
OK ボタンをクリックします。
78
(3) 非表示オブジェクトを再表示させるには,ナ
ビゲーションメニューバーで右クリック[ナビゲ
ーションオプション]をクリックし,[オプショ
ン]ダイアログボックスを表示します。
(4) [表示]タブ-[隠しオブジェク
ト]にチェックし, OK ボタン
をクリックします。
(5) 隠しオブジェクト【Q 卒業生削
除】
が
半透明で表示されます。
(6) 隠しオブジェクトの解除は,隠しオブジェクト【Q 卒業生削除】を選択し,右クリック[オブジェク
トのプロパティ]を選択し,表示された「Q 卒業生削除プロパティ」の「属性」-[隠しオブジェクト]
のチェックをはずし, OK ボタンをクリックします。
◆ 演習 ◆ その他の重要なオブジェクトにも非表示の設定を行ってみましょう。
(例)
【Q 学年更新】
【Q 新入生追加】
【Q 卒業生テーブル作成】など
9.3
データベースを最適化/修復する
データベースは,オブジェクトへの変更や削除の繰り返しなどによって,使われなくなった領域がファ
イルの中にそのまま削除データとして残り,サイズが大きくなってしまうことがあります。このような場
合は,[データベースを最適化/修復]を行うと,使用されていない領域を取り除くことができます。
なお,最適化処理を実行するには,全てのデータベースオブジェクト(テーブル,クエリなど)が閉じ
られていることが必要です。
[校務処理 8 章.mdb]ファイルに対して,[データベースを最適化/修復]を行いましょう。
(1) テーブルやフォームなどのオブジェクトが全て閉じていることを確認します。
(2) Office ボタン[管理]-[データベースユーティリティ]-[データベースの最適化/修復]をクリック
して,データベースの最適化を実行します。
※データベースの場所によっては[セキュリティ警告]が表示されることがあります。表示された場合は, 開く ボタン
をクリックします。
79
9.4
テーブルを正規化する
フィールドの重複をなくすためにテーブルを分割することを,専門用語で[テーブルの正規化]といいま
す。テーブルの正規化を行うと,効率的で無駄のないリレーショナルデータベースを構築することができ
ます。また,テーブルを分割した後も,元のテーブルと同じ構成をクエリとして作成,表示することがで
き,元のテーブル構成でデータを閲覧することができます。
【生徒個人情報】テーブルの正規化を行いましょう。
(1) [校務処理 8 章.mdb]が開かれていることを確認します。
(2) リボン「データベースツール」-「解析」から[テーブルの正規化]をクリックします。
(3) [テーブル正規化ウィザード]が起動しますので, 次へ(N) ボタンを2回クリックします。
(4) 【生徒個人情報】テーブルを選択して, 次へ(N) ボタンをクリックします。
(5) [フィールドの保存先のテーブルを決める方法を選択してください。]の画面では,[ウィザードを
使う]を選択して, 次へ(N) ボタンをクリックします。
(6) {都道府県},{市区町村}の2フィールドを別テーブルに分割するための提案情報が表示されま
す。【生徒個人情報】テーブルに関しては分割の必要がないため,確認ができたら
キャンセル ボタンをクリックしてウィザードを終了します。
※ 分割の必要がある場合は,ウィザードの指示に従って操作を進めてください。
9.5
パフォーマンスの最適化
Access には,データベースをオブジェクトごとに解析して,解析結果を表示する[パフォーマンスの最
適化]ツールが用意されています。データベースの作成がほぼ完成したら,データベースを解析して,パフ
ォーマンスを最適化することをお勧めします。
[校務処理 8 章.mdb]のパフォーマンスの最適化を行いましょう。
(1) リボン「データベースツール」-「解析」から[パフォーマンスの最適化]をクリックします。
(2) [すべてのオブジェクト]タブをクリックします。 すべて選択(A) ボタンをクリックし,
OK ボタンをクリックします。
(3) 解析結果が表示されます。
内容を確認したら 閉じる を
クリックします。
※ 最適化を実行したい項目がある時は,
項目を選択して 最適化 ボタンをクリ
ックします。
80
Point! 解析結果の種類について
[推奨事項]
[提案事項]
なるべく最適化を実行したほうが良い項目です。
最適化を実行するには交換条件がある項目です。実行する前にその利益と不利益を考
慮する必要があります。
[アイデア]
9.6
[メモ]ボックスに表示される指示に従って,ユーザー自身で最適化を実行します。
実行専用の ACCDE ファイルを作る
Access のファイルを[ACCDE ファイル]として保存すると,フォームやレポートをデザインビューで作成
したり,変更したりできなくなります。
不特定多数の人がファイルを利用する場合,ACCDE ファイルで運用すると,不用意にデザインやプロパ
ティを変更されることがありません。ただし,ACCDE ァイルが作成できるのは,データベースが Access2007
ファイル形式のデータベースだけです。
※ データベースファイルを ACCDE ファイルとして保存すると,モジュールは全てコンパイルされ,編集可能なソースコード
が全て削除されます。また,コードが削除されますので,ファイルサイズは小さくなります。
Access2007 新機能
ACCDE とは
Access2002-2003 形式までのバージョンでは,実行専用のファイルは MDE 形式でした。Access2007 からは,ACCDE
になります。
作成されたフォームやコードを変更できない機能については同じですが,
セキュリティが強化されました。
MDE では配布する際のデジタル署名のみが信頼性を保証するものでしたが,Access2007 から採用された ACCDE では,作
成者がセキュリティレベルの権限を持ち,ユーザーレベルではセキュリティレベルを変更できません。これにより第三
者が悪意的なコードなどをしのびこませるといったことができなくなります。
[校務処理 8 章.mdb]の ACCDE ファイルを作成しましょう。
(1) [校務処理 8 章.mdb]のデータベースは,開いておきます。
(2) ファイル形式の変換を行います。Office ボタン[変換]を選択します。
(3) [変換元データベース]のファイル一覧から,[校務処理 8 章.mdb]を選択し 変換 ボタンをクリッ
クします。
① 保存先を[Access 応用]フォ
ルダに切り替え
② ファイル名を確認します。
③ファイルの種類が Aceess2007 にな
っていることを確認します。
④ 保存 ボタンをクリック
します。
(4) 確認のメッセージには, OK ボタンをクリックします。
81
(5) リボン「データベースツール」-[ACCDE ファイルの作成]をクリックします。
(6) [MDE ファイルの作成]ダイアログボックスが表示されます。
①保存先は[Access 応用]
② ファイルの種類
が[ACCDE ファイ
ル (*.ACCDE)] で
あることを確認
③ ファイル名はそのまま
④ 保存(S) を
クリック
※保存する場所によっては[セキュリティ警告]が表示されることがあります。表示されたら, 開く ボタンをクリック
します。
(7) E ドライブの[Access 応用]フォルダ内に,ACCDE ファイルが作成されたことを確認します。
(8) 開いているファイルを閉じ,[校務処理第 8 章.accde]ファイルを開いて実行できない操作を確認し
ます。
リボン「作成」タブのテーブルやフォームなど,新し
く作成することができなくなっていることを確認
します。
Point! ACCDE ファイルで実行することができない作業
A) フォーム,レポート,モジュールのデザインビューを表示して,変更,作成などの操作
B) コードの変更(ACCDE ファイルにはソースコードがありません)
C) フォーム,レポート,モジュールのインポートやエクスポート
※ただし,ACCDE ファイル以外のデータベースから,テーブル,クエリ,データアクセスページ,マクロをインポートし
たり,ACCDE ファイル以外のデータベースにエクスポートしたりすることはできます。
9.7
SQL ビューについて
クエリを作成した後,リボン「デザイン」-「結果」から[表示]の[SQL ビュー]を選択すると,作成し
たクエリを[SQL ステートメント](SQL のコマンドで定義された式)形式で確認することができます。SQL
は「Structured Query Language」の略で,
「構造化照会言語」と訳されます。
SQL は,リレーショナルデータベースにおいて,データの抽出や更新,管理などの処理を行うために開
発された問い合わせ言語です。Access では,クエリを作成すると,そのクエリに相当する SQL ステートメ
ントが自動的に作成されて実行されます。クエリの実体は SQL ステートメントです。SQL 言語の意味が理
解できれば,SQL ビューの画面でクエリの編集を直接行うこともできます。
82
【Q 成績管理】クエリの SQL ビューを表示して,クエリの裏側ではどんな動作が行なわれているのか
を確認してみましょう。[校務処理 8 章.mdb]ファイルを使用します。
(1) ナビゲーションウィンドウのクエリに切り替えて,【Q 成績管理】クエリをデザインビューで開き
ます。
(2) リボン「デザイン」-「結果」から[表示]の[SQL ビュー]をクリックし,SQL ビューのウィンドウを
表示します。
作成されたクエリをSQLステートメントとして確認することができます。
どのテーブルからどのデータを抽出するかという作業を SQL 文で書かれ
ています。
9.8
SQL の操作
実際に SQL 言語を使って,テーブルのデータを抽出してみましょう。
9.8.1
単一テーブルを SQL で操作する
【生徒個人情報】テーブルから{学籍番号}
{年}
{組}
{番}
{氏名}
{性別}フィールドを抽出する
という条件の SQL 文を作成してみましょう。
(1) リボン「作成」→「その他」から[クエリデザイン]をクリックします。
(2)
[テーブルの表示]ダイアログボックスは,何も選択しないで閉じます。
(3) リボン「デザイン」→「結果」から[SQL 表示]の[SQL ビュー]をクリックし,SQL 言語を記入するた
めのウィンドウを開きます。
(4) SQL 文「SELECT 学籍番号,年,組,番,氏名,性別 from 生徒個人情報;」を入力します。
「SELECT」に続けて,必要なフィールド名(6つ)とテーブ
ル名を記入する。
※ 区切り記号は全て半角で入力
83
(5) リボン「デザイン」-「結果」から[表示]の[データシートビュー]をクリックしてデータシートビ
ューに切り替え,抽出条件の通り6つのフィールドが表示されていることを確認します。
6つのフィールドが表示され
たことを確認します。
(6) クイックアクセスツールバーの上書き保存ボタンをクリックし,クエリ名を「生徒クラス情報」と
入力して保存します。
(7) 【生徒クラス情報】クエリを閉じます。
(8) 作成した SQL 文を再度開きます。
② デザインビューを
クリックする
① 【生徒クラス情報】
を選択
(9) SQL 文が表示されます。
SQL 文が改行されているのは,Access で
自動的に行われた機能
<説明>
① 「SELECT~」・・・{学籍番号}{年}{組}{番}{氏名}{性別}フィールドを抽出します。
② 「FROM~」・・・【生徒個人情報】テーブルからデータを抽出します。
Point! 全フィールドを抽出するには
全てのフィールドを抽出する場合には,
「SELECT *」と入力します。
「*」は,ワイルドカードと呼ばれる
記号で,ここでは,
【生徒個人情報】テーブルの全てのフィールドを抽出します。
84
Point! SQL 入力時のきまり
A) SQL を入力するときは,必ず半角英数字で入力しましょう。
B) SQL の入力は大文字,小文字どちらでも入力可能ですが,できれば大文字で入力するようにしましょ
う。
C) 文字列の間は,半角スペースを入れましょう。
◆ 演習 ◆ 【生徒個人情報】テーブルから全てのフィールドを使い,
{年}フィールドが「3」年生で{性
別}が「女」性のレコードを抽出するという条件の SQL 文を作成しましょう。
作成ができたらデータシートビューに切り替えて結果を確認し,
「生徒情報3年女子」という名前で保
存しましょう。
<SQL 文>
SELECT * FROM 生徒個人情報 WHERE 年=3 AND 性別="女";
※ 抽出するフィールドのデータ型がテキスト型の場合,
「””」(ダブルコーテーション)で囲みます(例:
性別=”女”)
。
SQL ビュー
<抽出結果>
データシート
ビュー
<説明>
① 「SELECT~」・・・全てのフィールドを指定して抽出します。
② 「FROM~」・・・【生徒個人情報】テーブルからデータを抽出します。
③ 「Where~」・・・{年}フィールドが「3」のレコードで,なおかつ{性別}フィールドが「女」のレコード
のみを抽出します。
◆ 演習 ◆ 【生徒個人情報】テーブルの全てのフィールドを使い,
{年}フィールドが昇順になるように
レコードを抽出するという条件の SQL 文を作成しましょう。
作成ができたらデータシートビューに切り替えて結果を確認し,
「生徒情報学年順」という名前で保存
しましょう。
<SQL 文>
SELECT * FROM 生徒個人情報 ORDER BY 年;
SQL ビュー
<抽出結果>
データシートビュー
85
<説明>
① 「SELECT~」・・・全てのフィールドを指定して抽出します。
② 「FROM~」・・・【生徒個人情報】テーブルからデータを抽出します。
③ 「ORDER BY~」・・・{年}フィールドを昇順で並べ替えて抽出します。
Point! 「ORDER BY」について
「ORDER BY フィールド名」・・・昇順(小さい順)で指定したフィールドを抽出
「ORDER BY フィールド名 DESC」・・・降順(大きい順)で指定したフィールドを抽出
9.8.2
複数テーブルを SQL で操作する
SQL 言語を使って,複数テーブルのデータを抽出してみましょう。
【生徒個人情報】テーブルと【出身中学校一覧】テーブルから,同じ{出身中学コード}の{学籍番
号}
{年}
{組}
{番}
{氏名}
{学校名}を抽出しましょう。作成後,
「生徒情報出身中学」という名前で保
存しましょう。SQL 文を記述するために,P86 を参照して,デザインビューでクエリを新規作成します。
<SQL 文>
1
SELECT 生徒個人情報.学籍番号,生徒個人情報.年,生徒個人情報.組,
生徒個人情報.番,生徒個人情報.氏名,出身中学校一覧.学校名
2
3
FROM 出身中学校一覧
INNER JOIN 生徒個人情報 ON 出身中学校一覧.コード = 生徒個人情報.出身中学コード;
<説明>
1「SELECT~」・・・【生徒個人情報】テーブルと【出身中学校一覧】テーブルの各フィールドを指定して
①
います。
2「FROM~」・・・【出身中学校一覧】テーブルからデータを抽出します。
②
③
3「INNER~」・・・共通フィールドである【生徒個人情報】テーブルの{出身中学コード}と【出身中学校一
覧】テーブルの{コード}を関連付けて,その関連付けたレコードを順に抽出します。
<使用テーブルと共通リスト>
①【生徒個人情報】テーブルから,
{学籍番号}{年}{組}{番}{氏名}フィ
ールドを使用
②【出身中学一覧】テーブ
ルから,{学校名}フィ
ールドを使用
共通のフィールド
86
SQL ビュー
<抽出結果>
データシートビュー
Point!
複数テーブルを操作する SQL 入力時の決まり
A) SELECT でフィールドを指定するとき
「SELECT 生徒個人情報.学籍番号」のように,
「テーブル名.フィールド名」の順番で,間に「.」(ド
ット)を入力します。
B) FROM でテーブルを指定するとき
「FROM 生徒個人情報,出身中学校一覧」のように,テーブル名の間に「,」(カンマ)を入力します。
C) INNER JOIN で条件を指定するとき
「INNER JOIN 生徒個人情報 ON 出身中学校一覧.コード = 生徒個人情報.出身中学コード;」のよう
に,関連付けたいテーブルのフィールドを「=」(イコール)で繋いで入力します。
※ SQL はこの他にもたくさんの命令や句があります。今回このテキストでご紹介したものはごく一部です。
9.9
オブジェクトの依存関係を確認する
Access2007 では,データベースの各オブジェクト間の依存関係に関する情報を[オブジェクトの依存関
係]作業ウィンドウで表示することができます。
 オブジェクトの依存関係とは
オブジェクトの依存関係とは,フォームやレポートなどがどのテーブルまたはクエリを参照しているか
という関連性のことです。例えば,
【生徒個人情報】テーブルを基に【F 成績管理メイン】を作成したとし
ます。
【生徒個人情報】テーブルが不要になり削除すると,
【F 成績管理メイン】フォームはデータを表示
できなくなります。
このような場合,あらかじめオブジェクトの依存関係を確認して,依存しているオブジェクトがあれば
依存関係を変更してテーブルを削除したり,依存しているフォームを削除してからテーブルを削除したり
するなど,エラーを起こさないようにすることができます。
オブジェクトの依存関係には,
[選択したオブジェクトに依存する関係(参照元からの確認)]と[選択した
オブジェクトが依存する関係(参照先からの確認)]の2つの確認方法があります。
87
【生徒個人情報】テーブルに依存するオブジェクトを確認しましょう。
(1) ナビゲーションウィンドウをテーブルに切り替えま
す。【生徒個人情報】テーブルを選択し,リボン「デー
タベースツール」-「表示/非表示」から[オブジェクト
の依存関係]をクリックします。
※ 依存関係情報の更新についてのメッセージが表示さ
れた場合は, OK をクリックします。
(2) 作業ウィンドウで,オブジェクトの依存関係を確認します。
■[選択したオブジェクトに依存する関係]
(参照元からの確認)
※ Access2003 以降のバージョンから使用できるようになった機能です。
88
R Access 2007」のことを「Access」と記述しています。
本テキストでは「Microsoft○
Microsoft は米国 Microsoft Corporation の米国およびその他の国における登録商標です。また,各
Microsoft 製品の画面の使用に当たり,Microsoft Corporation のガイドラインに従って画面写真を使用し
ています。
その他,本テキストに掲載した製品名およびサービス名は一般に開発メーカーおよびサービス提供元の
登録商標です。
C 2010 千葉県総合教育センター
禁無断転載 ○
89