VB ADO 操作 |
Microsoft ActiveX データ オブジェクト
(ADO) OLE DB プロバイダを通してデータベース サーバー上のデータへのアクセスと操作を行います。 |
[参照設定] Microsoft ActiveX Data Objects 2.5 Library (msado15.dll) [変数宣言] Dim cn As ADODB.Connection Dim rs As ADODB.Recordset [オブジェクト生成] Set cn = New ADODB.Connection Set rs = New ADODB.Recordset |
|
【SELECT SQL実行
サンプルリスト】 '************************************************************************** ' MS-AccessのDBに接続して、SELECT文を実行後、データを抽出して、DBを切断する '************************************************************************** Private Sub getSQL() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset Dim strSQL strSQL = "SELECT * FROM HINMST" 'SQL文 cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" 'MS-AccessのDBに接続 rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText 'SQLを実行 While Not rs.EOF 'レコード数分ループ Debug.Print rs!HINMEI '「品名」フィールドの内容を抽出 rs.MoveNext '次のレコードへ DoEvents Wend rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub |
【新規レコード作成
サンプルリスト】 '******************************************************************* ' MS-AccessのDBに接続して、新規レコードを作成後、DBを切断する '******************************************************************* Private Sub getSQL() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset Dim strTBL strTBL = "HINMST" 'テーブル名 cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" 'MS-AccessのDBに接続 rs.Open strTBL, cn, adOpenForwardOnly, adLockOptimistic, adCmdTable 'テーブルを開く rs.AddNew '新規レコードを追加 rs!HINMEI = "あんぱん" '「商品名」をセット rs!HINCODE = "100" '「商品コード」をセット rs!PRICE = 70 '「価格」をセット rs.Update '更新(保存) rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub |
●Openメソッド 【機能】データ ソースへ接続します。 【書式】cn.Open 接続情報 【書式 (MS-Access) 】cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=MDBファイル名" 【書式 (SQL-Server)】cn.Open "Driver={SQL Server};Server=サーバ名;Database=データベース名;Uid=ユーザID;Pwd=パスワード;" 【 例 】 cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" 'MS-Accessへ接続 cn.Open "Driver={SQL Server};SERVER=SICILIAN;DATABASE=BITTER;UID=PE;PWD=PU;" 'SQL-Serverへ接続 |
●Closeメソッド 【機能】オブジェクトを閉じます。 【書式】cn.Close 【 例 】 Set cn = New ADODB.Connection cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" cn.Close 'コネクションを閉じる Set cn = Nothing
|
●Openメソッド 【機能】カーソルを開きます。 【書式】rs.Open Source, ActiveConnection, CursorType, LockType, Options
Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText 'SQLを発行 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strTBL, cn, adOpenForwardOnly, adLockOptimistic, adCmdTable 'テーブルを開く |
●BOF、EOFプロパティ 【機能】カレント レコードの位置が最初のレコードより前にあるかどうか、もしくは、最後のレコードより後にあるかどうかをブール値で返します。 【書式】result = rs.BOF ※レコードの位置が最初のレコードより前にあるかどうか 【書式】result = rs.EOF ※レコードの位置が最後のレコードより後にあるかどうか 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText While Not rs.EOF 'レコード数分ループ Debug.Print rs!HINMEI rs.MoveNext '次のレコードへ DoEvents Wend rs.Close cn.Close Set rs = Nothing Set cn = Nothing
|
●RecordCountプロパティ 【機能】レコード数を返します。 【書式】result = rs.RecordCount 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText result = rs.RecordCount 'レコード数の取得 rs.Close cn.Close Set rs = Nothing Set cn = Nothing
|
●MoveFirst、MoveLast、MoveNext、MovePreviousメソッド 【機能】カレントレコードを最初、最後、次、または前のレコードに移動します。 【書式】rs.MoveFirst ※カレントレコードを先頭のレコードにします 【書式】rs.MoveLast ※カレントレコードを最後のレコードにします 【書式】rs.MoveNext ※カレントレコードを次のレコードにします 【書式】rs.MovePrevious ※カレントレコードを前のレコードにします 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText While Not rs.EOF 'レコード数分ループ Debug.Print rs!HINMEI rs.MoveNext '次のレコードへ DoEvents Wend rs.Close cn.Close Set rs = Nothing Set cn = Nothing
|
●AddNewメソッド 【機能】新規レコードを作成します。 【書式】rs.AddNew 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strTBL, cn, adOpenForwardOnly, adLockOptimistic, adCmdTable 'テーブルを開く rs.AddNew '新規レコードを追加 rs!HINMEI = "あんぱん" '「商品名」をセット rs!HINCODE = "100" '「商品コード」をセット rs!PRICE = 70 '「価格」をセット rs.Update '更新(保存) rs.Close cn.Close Set rs = Nothing Set cn = Nothing
|
●Updateメソッド 【機能】カレントレコードへの変更内容を保存します。 【書式】rs.Update 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset strSQL = "SELECT * FROM HINMST WHERE HINCODE='100'" 'SQL文 cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText 'SQL文を実行 If Not rs.EOF Then rs!PRICE = 120 '「価格」を変更 rs.Update '更新(保存) End If rs.Close cn.Close Set rs = Nothing Set cn = Nothing
|
●Deleteメソッド 【機能】カレントレコードを削除します。 【書式】rs.Delete 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset strSQL = "SELECT * FROM HINMST WHERE HINCODE='100'" 'SQL文 cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText 'SQL文を実行 If Not rs.EOF Then rs.Delete 'レコードを削除 End If rs.Close cn.Close Set rs = Nothing Set cn = Nothing
|
●Closeメソッド 【機能】オブジェクトを閉じます。 【書式】rs.Close 【 例 】 Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\WK\TEST.mdb" rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText rs.Close 'レコードセットを閉じる cn.Close Set rs = Nothing Set cn = Nothing
|