ACCESSによる データベースアプリケーション開発実習 日本工業大学 情報工学科 “データベースの実際” 教材 copyright(c) 2001 Ohki Software Engineering Research Laboratory, All Rights reserved ACCESSの基本構成要素(基本的な用語) 《 界 ACCESSの世 》 《 界 データベース理論およびSQLの世 》 テーブル(Tabel) 関係表(実際にデータを格納した表) クエリ(Query) ビュー(いろいろなテーブルから利用する属性 クエリで作成した仮想的な表は DynaSetと呼ぶ を集めたり,レコードを選択して作成した仮想的 な表. ただし,関連付けされていないテーブル の属性を利用しようとしても,できないので注意 フォーム(Form) 入出力画面の定義 レポート(Report) 出力帳票の定義 すること) 開発の手順 ここまでは“SILVERRUN”を 用いて設計したので省略. ①データベース概念モデル設計(ERD) ②データベーススキーマ設計(RDM) ③RDMからACCESSのテーブル 定義へ変換 [テーブルのデザインを用いる] ④ 各種のクエリ定義 ・テーブルから指定した条件に合致する レコードを選択した仮想テーブル(導出 表)(Dynasetと呼ぶ)の定義や ・テーブルへデータを追加したり,テー ブルのデータを更新,削除するため操作 の定義を行う(詳細は後述). [クエリのデザインを用いる] ③‘ 定義したテーブルへのデータ 入力用フォームを作成する オートフォーム機能を用いると よい.必要に応じてレイアウト を編集する. ④‘ クエリの表示用フォームを 作成する オートフォーム機能を用いると ⑥データ 入力作業 入力を簡素 化するため にコンボボッ クスを利用 するとき よい.必要に応じてレイアウト を編集する. ⑤ 「起動時のフォーム」を作成し, ボタンを選択したとき,どのフォー ムを開くかのフォーム間の関連付 けを行う(フォームの使用順序決め) ③ RDMからACCESSのテーブル定義へ変換 [テーブルのデザインを用いる] 1) ACCESSのテーブル定義(テーブルを選びデザインメニューを選 択) RDMで定義した データベーススキーマ ※主キーの指定は忘れないこと. 主キーはオートナンバにしておくと間違が少ない. 2) テーブル間のリレーション(関連)を定義する(“ツール”メニューの“リレーション”を選ぶ) ● リレーションの張り方は,テーブルの主キー属性(例えば“倉庫”の“倉庫番号”)を,関連する テーブルの外部キー(“格納”の“倉庫番号”)の上にドラッグして行う.すると,以下のダイアログ ボックスが表示される.二つの属性は主キーと外部キーとの関係にあるので,外部キーが主キーを参照し たとき,不整合があってはならない.したがって「参照整合性」をONにする. ③ RDMからACCESSテーブル定義 への変換 終わり ③‘ 定義したテーブルへのデータ入力用フォームを作成する [1] デザインしたテーブルを選択して メニュー“挿入/ オートフォーム”を選択すると 自動的に,テーブルに対するデータ入力用フォーム作成される. [2] 名前を付け保存するとデータ入力のフォームができあがる. [3] フォームのレイアウトを編集したければ,フォームを選び“デザイン”を選択する. 表示された以下のデザイン用画面で自由に文字や画像の貼り付けの貼り付けができる. ③‘定義したテーブルへの データ入力用フォーム作成 終わり ④ 各種のクエリ定義 (1)いろいろなテーブルから,指定した条件に合致するレコードを選択した仮想テーブルを作成する. (2)テーブルへデータを追加したり,テーブルのデータを更新,削除したりする操作を 定義する. “デザインビューでクエリを作成する” を選び, “テーブルを追加する”を選ぶと必要なテーブルが表示される . テーブルの中から“欲しい情報を表示するのに必要な属性を選んだり”,“特定の条件を満たす レコードを選択するための条件式”を指定する(詳しくは後述). 1 選択クエリ(テーブル群から必要な属性とレコードを選択して仮想表―名前は 保存すると気に指定する―を作成する) この中で右ボタンを押すと“クエリの 種類”が表示されるので,そこから “選択”を選ぶ 「レンタル日付が#01/04/01# 以降のレコードを選択せよ」の 意味 このような指定から,背後で以下のSQLが生成されデータベースに渡される SELECT 会員.会員番号, レンタル.レンタル日付, 会員.氏名, 会員.電話番号 FROM 会員 INNER JOIN レンタル ON 会員.会員番号 = レンタル.レンタル会員番号 WHERE (((会員.会員番号)=[会員番号を指定してください]) AND ((レンタル.レンタル日付)>=#4/1/2001#)); このクエリを実行す る(すなわち,クエリ を開く)と,このSQL が実行され,仮想的 なクエリ表が作成さ れる・ レコード抽出条件(検索条件)のパラメータ指定 (抽出する条件を,クエリを実行する前に指定したいとき) このように抽出条件を指定しておくと,クエリの実行(すなわち, クエリを開く)前に,以下のようなダイアログボックスが表示される ので,具体的な抽出条件の値(この例では,会員番号の値)を入力する. すると入力した値と会員番号が一致する レコードのみが選択される 導出属性の指定方法 (テーブルには含まれないが,計算によって一時的に属性を作成したいとき) 導出属性の名前 導出属性の値を計算する計算式 (計算式の中で用いられている [ 会員 ] ! [入会日付 ] は以下を意味する ) テーブル名 属性名 《補足》 フィールドの計算式や抽出条件の指定に便利な機能 条件式や計算式を入力する ときには,セル内で右ボタ ンを押すとポップアップメ ニューが表示されるので, その中から“ビルド”を選 ぶと,式の入力をいろいろ ガイドしてくれる. 集計の指定方法 (選択したレコードをグループ化したいとき) (a)このクエリ定義を実行する(すなわち,定 義したクエリを開く)と・・ “カウント”とす ると自動的に フィールド名が 付く ①レンタルした会員番号毎にレコード をグループ化したいとき指定する ②グループ化したレコードの数 (カウントした数)を作成した いとき,指定する 《 グループやカウントの指定方法 》 フィールドに カーソルを移動するとコンボボックスが表示される のでそこから選ぶ (b)レンタルテーブルの同じ“レン タル会員番号”を持つレコードが グループ化して一つにまとめられ, そのカウント数が“レンタル会員 番号”と共に表示される 2 クロス集計クエリ(2つの属性でグループ化した行列形式の各セルに, 集計対象属性が何回出現するかを集計したもの.アンケート集計に必ず 用いられる) この中で右ボタンを押すと“クエリの種類”が表示 されるので,そこから“クロス集計”を選ぶ 会員番号200023の会員 が,01/1/19に2回レンタル “カウント”とすると自動的に したとすると,その回数 フィールド名が付く がここに集計される 行:会員番号 各セルに出現する回数を集計 する対象であることを意味する 200023 01/1/19 01/1/20 列:レンタル日付 01/1/21 2 200025 200028 3 テーブル作成クエリ (いろいろなテーブルの属性を合成したテーブルを作成する) この中で右ボタンを押すと“ク エリの種類”が表示されるので, そこから“テーブルの作成”を 選ぶ “レンタル”テーブル のすべての属性を意 味する このクエリを実行する(すなわち,定義したクエリを開く)と新しい一時的なテーブル “会員No(別途テーブル名は指定した)”が生成される このクエリは背後でこのSQLが 実行し,新しいテーブルを作成 する 《 背後で生成されたSQL文 》 SELECT レンタル.*, 会員.会員番号, 会員.電話番号 INTO 会員No FROM 会員 INNER JOIN レンタル ON 会員.会員番号 = レンタル.レンタル会員番号; 4 更新クエリ(テーブルから,指定した条件を満たすレコードを選択し, それらのレコードについて,指定した属性の値を“レコードの更新”で 指示した値に変更する) この中で右ボタンを押すと“ク エリの種類”が表示されるので, そこから“更新”を選ぶ (b)選択条件を満たしたレコードについて,この フィールドにセットする値(この例では,2000を加 算して,セットしなおしている) このクエリを実行する(すなわち, クエリを開く)と,このSQLが実行 され,テーブルが更新される (a)特定のレコードを選択する選択条件(この例 では,“レンタル日付”が01/01/01以降のレコード を選択する 《 背後で生成されたSQL文 》 UPDATE レンタル SET レンタル.レンタル番号 = [レンタル]![レンタル番号]+2000 WHERE (((レンタル.レンタル日付)>=#1/1/2001#)); 5 追加クエリ(指定した条件を満たすレコードをテーブルから抽出して, 追加先テーブルに追加する) この中で右ボタンを押すと“クエリの種類”が表示 されるので,そこから“追加”を選ぶ. ※すると追加先のテーブル名を指定するダイア ログボックスが表示されるので,この例では “レ ンタル”と指定する(ただし,“レンタル”テーブル と“追加テーブル”の属性は同じでないとまずい). 追加先テーブル(この例では“レンタル”)に追加すべきレコードを “追加レンタル”テーブルから抽出する条件を指定する. 《 背後で生成されたSQL文 》 このクエリを実行する(すなわち, クエリを開く)と,このSQLが実行 され,テーブルにレコードが追加 される. INSERT INTO レンタル ( レンタル番号, レンタル日付, レンタル会員番号 ) SELECT 追加レンタル.レンタル番号, 追加レンタル.レンタル日付, 加レンタル.レンタル会員番号 FROM 追加レンタル WHERE (((追加レンタル.レンタル番号) Between 1 And 10)); 6 削除クエリ (テーブルから指定したレコードを削除するとき用いる.抽出条件を満足する レコードが削除される) この中で右ボタンを押すと“クエリの種類”が表示 されるので,そこから“削除”を選ぶ. “レンタル”テーブルの すべての属性を意味 する 削除するレコードの条件(この場合,レンタ ル会員番号が2のもの) 《 背後で生成されたSQL文 》 このクエリを実行する(すなわち, DELETE レンタル.*, レンタル.レンタル会員番号 クエリを開く)と,このSQLが実行 FROM レンタル され,レコードが削除される WHERE (((レンタル.レンタル会員番号)=2)); ④‘ クエリの表示用フォームを作成する [1] デザインしたクエリを選択して メニュー“挿入/ オートフォーム”を選択すると 自動的に,そのクエリに対するフォーム作成される. [2] 名前を付け保存するとクエリの結果を表示するフォームができあがる. クエリの表示用フォームの編集 配置したフィールドを右クリックして“プロパティ”を 表示し, “コントロールソース(値の発生源や計算 式)”として,テーブルの属性値や計算式を指定で きる. ツールボックスを利用すると,新たな フィールドを自由に追加して配置できる ⑤ 「起動時のフォーム」を作成し,ボタンを選択したとき,どのフォームを 開くかのフォーム間の関連付けを行う コマンドボタンをツールボックスから配置し,コ マンドボタンウィザードを使って「ボタンをクリッ クしたら “会員フォーム”を開く」ようにする. 他のフォームの操作も同様に指定する. もろろん,「フォームを閉じる」ようにしてもよい. いろいろなフォームの使用順序を決定する 多数のフォームを扱うときは,あらかじめフォームの表示順序を設計しておく 【すべてに通じる設計の基本精神】 会員登録フォーム フォーム表示の状態遷移図 開始フォーム “会員を見る” ボタンクリック “登録”ボタンクリック 会員フォーム “更新”ボタンクリック / [会員番号の入力] “戻る”ボタン クリック “戻る”ボタン “レンタルを見 る”ボタンクリッ ク クリック “戻る”ボタンクリック “レンタル状況”ボタ ンクリック / [会員番 号の入力] 会員更新フォーム レンタル履歴フォーム レンタル状況フォーム “仕入れを見る” ボタンクリック “売上集計”ボタンク リック 仕入先フォーム 売上集計フォーム a) いろいろなコマンドボタンを配置して起動用時に表示するフォームを完成させたら.. b) “ツール”メニューの“起動時の設定” を選び 起動用時に表示するフォームとして指定する c) すると,ACCESSを起動したとき,最初にこのフォームが表示される コマンドボタンをクリックしたとき,さらに凝った制御を行いたい人は, VBAのプログラムマニュアルを参照してください. VBAでかなり高度なことができるので,データベースアプリケーション開発 で仕事をしたい人は,勉強しておくとよい. ⑥ データ入力作業 テーブルのデータ入力用として作成したフォームを利用して, データを次々と入力してゆくことができる. テーブル「会員」の入力用フォーム 各フィールドにデータを入力 画像やイメージデータのときは,入 力フィールド上で右クリックし,“ オブ ジェクトの挿入” を選択すると,オブ ジェクトの種類に対応したデータを 入力するツールが起動する. ※ データ入力をコンボボックスを用いて簡素化するに は! ①選択クエリ “得意先名”として保存する ②コンボボックスを選んで フォームの一つのフィールド として 貼り付ける ③ コンボボックス・ウィーザードにしたがって,フォーム“得意先名”をの値を コンボボックスのリストとして表示することを指示する コンボボックスのもつプロパティを, コントロールソースを“得意先名”とする (コンボボックス上で右クリック) 質問?
© Copyright 2025 ExpyDoc