
トップページ
>データベースプログラミング
データベースプログラミングの流れ
ここでは,Access2000以降から採用されたADOでプログラミングする例を記述しています.
- コネクションの確立
Dim cn As New ADODB.Connection
- レコードセットの定義
Dim rs As New ADODB.Recordset
- 変数の定義
[例]
Dim i As Integer(数値の変数)
Dim i As String(文字列の変数)
* iは変数名なので,自由に設定できる
- SQL 文の発行(テーブルの操作等を行う場合のみ)
- プログラミング
- データベースを閉じる
rs.Close
Set rs = Nothing(メモリの内容をクリア)
- コネクションを閉じる
cn.Close
Set cn = Nothing(メモリの内容をクリア)
プログラム上でのSQL文の書き方
1行で終わる場合:
mySQL = "SQL文"
複数行にまたがる場合:
mySQL = "SQL文" & _
"SQL文" & _
"SQL文"
SQL文中に任意の値を入れる場合:
mySQL = "SQL文'" & 文字データの変数 & "'" &_
"SQL文" & 数値データの変数 & _
"SQL文"
"'" & zip & "','" & pref & "','" & address & "','" & tel & "'," & _
"'" & mail & "'," & kokoid & ",'" & gakka & "'," & gakunen & "," & _
注意点:
- 事前に変数を定義する必要がある
Dim mySQL As string
- 句と句の間に必ず空白を入れる
プログラム上でのSQL文発行例
配列に格納されている値をSQL文でテーブルに追加する
mySQL = "INSERT INTO t_kaitousu VALUES ( "
For po = 1 To 30
mySQL = mySQL & "'" & arr_kaitousu(po) & "',"
Next po
mySQL = Left(mySQL,Len(mySQL) - 1)
mySQL = mySQL & " );"
cn.Execute mySQL
データベースプログラミングテクニック
- レコードの移動
| 先頭 | rs.MoveFirst |
| ひとつ前のレコード | rs.MovePrevious |
| 次のレコード | rs.MoveNext |
| 最後のレコード | rs.MoveLast |
- データを追加する
[例]
'変数の定義
Dim no As Integer
Dim name As String
'データの追加
rs.Addnew
!NO = no (変数noの値をrsテーブルのNOフィールドに入れる)
rs!NAME = name
rs.Update
- データを1行ずつ削除する
[例]
Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop
- データをまとめて削除する
[例]
'変数の定義
Dim com As New ADODB.Command
Dim mysql As String
'SQL文の発行
mysql = "delete from table1"
'SQL文の実行
com.ActiveConnection = cn
com.CommandText = mysql
com.Execute
- 既存のデータの有無を確認する方法
既存のデータの有無を確認したいテーブルにデータが入っているかどうかをSQL文(カウント関数)を発行して確認する
[例]
'定義
Dim rs As New ADODB.Recordset
Dim mysql As String
'SQL文の発行
mysql = "Select Count(*) As カウント from table2"
'SQL文を実行
rs.Open mysql,cn,adOpenKeyset,adLockOptimistic
'データの有無を確認
If rs!カウント > 0 then
…
End If
- コネクションとレコードセット
Connectionは,ひとつのデータベースについてひとつ
Recordsetは,用途に応じて分ける
VBAの基礎知識(制御構造) プログラミング技術
更新日:2004/2/16
Copyright (C)2003-2004 Orakumiko All rights reserved.