データベースプログラミング

データベースプログラミング
データベースプログラミングとは?
汎用プログラミング言語(Microsoft Access の場合には Visual Basic)を用いたデータベー
ス・アプリケーションの実現
データベースプログラミングをいつ用いるか?
• SQL だけでは記述できない複雑な処理を実現する場合
•
9
具体例 1:惜敗率の計算
9
具体例 2:ドント方式による比例代表選挙における各党派の議席数決定
9
具体例 3:重複立候補を考慮した比例代表選挙の当選者決定
SQL で記述できる場合には、SQL を用いた方が高速かつ保守が容易。
Visual Basic の概要
•
Microsoft Access の標準プログラミング言語
•
Microsoft Access の全機能を実現可能.(例外:初期設定マクロ)
•
モジュール機能を持つ構造化言語.
(C 言語とほぼ同一機能を持つ.)
関数と手続き
•
関数は値を返す.手続きは値を返さない.
•
関数呼び出しは,関数,手続き,クエリー,テキストフィールドから行う.
•
関数は,データベースやモジュール変数の値を変更できない.(ガイドライン)
•
手続きは,データベースやモジュール変数の値を変更する.
•
手続き呼び出しは,手続き,ボタンから行う.
モジュール
•
モジュール変数,関数,手続きから構成.
•
モジュール変数には,モジュール内の関数,手続きのみがアクセス可能.
•
互いに関連した機能を持つ関数や手続きをまとめるために使用.
ダイナセット
•
Access のデータベースを操作するための特別なデータ構造
•
テーブルの内容,クエリーの実行結果を保持する.
ダイナセットの種類
機能
ダイナセット(DynaSet)
読み込み,変更がともに可能
スナップショット(SnapShot)
読み込みのみが可能
データベースとダイナセットの操作
•
データベースの操作
Dim DB 変数名 AS Database
Set DB 変数名 = DBEngine.Workspaces(0).Databases(0)
ダイナセットの操作 または 更新クエリーの実行
DB 変数名.Close
•
更新クエリーを実行する.
Dim
クエリー変数
As
QueryDef
Set クエリー変数 = DB 変数.OpenQueryDef(クエリー名)
クエリー変数.Execute
•
ダイナセットの操作(テーブル)
Dim 変数名 AS DynaSet
Set 変数名 = DB 変数名.OpenTable(テーブル名)
レコードの操作
変数名.Close
•
ダイナセットの Open(SQL クエリー)
Dim 質問変数 As String
Set 質問変数 = SQL 質問
Set 変数名 = DB 変数名.OpenRecordSet(質問変数,dbOpenRecordSet)
レコードの操作
変数名.Close
•
ダイナセットの各レコードを順次アクセスする.
変数名.MoveFirst
While
NOT 変数名.EOF
当該レコードの操作
変数名.MoveNext
Wend
•
当該レコードの属性値を読み込む.
変数名![属性名] を式中で用いる.
•
当該レコードの属性値を変更する.
変数名.Edit
変数名![属性名] に値を代入する.
変数名.Update
•
当該レコードを消去する.
変数名.Edit
変数名.Delete
変数名.Update
•
ダイナセットの末尾に新規レコードを追加する.
変数名.AddNew
変数名![属性名] に値を代入する.
変数名.Update