MS アクセスでデータベースを作成し、VB プログラムで操作します。 ここでは、フォームのコントロールから入力されたデータを、データベースに登録するプログラムを作成します。
プログラムを作る前に、データベースを作成します。
プログラムの作成は、最初にプログラムの外側から決めていって、その後プログラムの内部を決めます。 プログラムの外側とは、「インプットとアウトプットをどうするか」「処理に必要なデータは何か」「処理の順序をどうするか」などをいいます。 ここで、これからどんなプログラムを作ろうとしているのか、より具体化します。
データベースの作成で、処理に必要なデータの構成と属性を定めます。 プログラムを作り始めたらデータベースは作り変えません。 したがって処理に必要なデータは、この時点できちんと決めます。
MS アクセスでデータベースを作成すると、'名前.mdb' のデータベースファイル(以下 MDB ファイル)が作られます。 この MDB ファイルを VB プログラムから SQL で操作します。 新規に MDB ファイル 'db.mdb' を作成し、このデータベースに次のような 'kojin' テーブルを作成して下さい。
| フィールド名 | データ型 | 大きさ | 備考 |
|---|---|---|---|
| id | 長整数 | ‐ | 主キー |
| name | テキスト | 20 | |
| data | テキスト | 50 |
VB プログラムの中で、操作の対象となるデータベースは、Databese オブジェクトとして存在します。 データベースに対する操作は、Databese オブジェクトに依頼します。 Databese オブジェクトは、次のように使います。
VB プログラムからデータベースを操作するために、VB プログラムにデータベースを接続します。 VB プログラムにデータベースの接続されると、新しい Databese オブジェクトが作られます。 今後、VB プログラムからデータベースを操作するときには、この Databese オブジェクトに対して処理を行います。
データベースの接続は、OpenDatabase で行います。
次の例は、データベースファイル 'db.mdb' を開き、新しい Databese オブジェクトを作ります。 そしてこのオブジェクトの参照を返してくれるので、変数 db にセットします。
Dim db As Database
Set db = DBEngine.Workspaces(0).OpenDatabase("db.mdb")
SQL の実行は、execute メソッドで行います。 execute メソッドの引数には、実行する SQL を文字列で渡します。
次の例ではレコードを追加する insert 文を実行します。 結果は、テーブル「kojin」に、レコード「1、'浦島 太郎'、'玉手箱を開けてはいけません。'」が追加されます。
Dim statement As String
statement = "insert into kojin values(1, '浦島 太郎', '玉手箱を開けてはいけません。');"
db.Execute statement
Exit Sub
すべてのデータベースを操作が終了たならば、プログラムに接続されたデータベースを切り離します。 データベースを切り離しは、close メソッドで行います。
db.Close
プログラムが起動すると、次のフォームが表示されます。 テキストボックスにデータを入力し「追加」ボタンをクリックすると、テーブルにデータが追加されます。

プログラムは次のように動作します。

以下がソースプログラムです。 メソッドの実行でエラーが発生したときには、トラップでメッセージを表示させています。
Option Explicit
Private db As Database
Private Sub cmdAdd_Click()
On Error GoTo errorhandle
Dim statement As String
statement = "insert into kojin values(" _
& txtID.Text & ", '" & txtName.Text & "', '" & txtData.Text & "');"
db.Execute statement
Exit Sub
errorhandle:
MsgBox Err.Description & vbCrLf & "SQL文:" & statement, _
vbExclamation, "DB登録"
Exit Sub
End Sub
Private Sub cmdQuit_Click()
db.Close
End
End Sub
Private Sub Form_Load()
On Error GoTo errorhandle
Set db = DBEngine.Workspaces(0).OpenDatabase("db.mdb")
Exit Sub
errorhandle:
MsgBox Err.Description, vbCritical, "DB接続"
End
End Sub
テキストボックスにデータを入力し「追加」ボタンをクリックしたら「終了」ボタンをクリックしプログラムを終了します。 MS アクセスで 'db.mdb' ファイルを開いて、データが追加されたか確認します。 確認されたならば、何件かデータを追加します。
テーブルには主キーの重複するレコードは存在できません。 わざと主キー(列名 'id' )を重複させて、 insert を実行してみます。 どのような結果になりましたか。
プログラムには正常なデータばかりでなく、誤ったデータを入力して、そのときのプログラムの動作を確認して下さい。