○VB6でDAO

参照設定にてDAO ** Object Libraryを追加します

'アクセスのファイル名 c:\test.mdb
' _______________________
'|        table1         |
' -----------------------
'|name text | status int |
' -----------------------

'-----------初期設定---------------
Dim MyDB As Database
Set MyDB = OpenDatabase("c:\test.mdb") 'データーベースファイルのオープン、フルパスの指定が必要

'-----------レコードセットを開く-----------
Dim MyTable As Recordset
Set MyTable = MyDB.OpenRecordset("select * from table1") 'SQL実行によりレコードの取得

'Set MyTable = MyDB.OpenRecordset("select * from table1 where name ='あああ'")
'Set MyTable = MyDB.OpenRecordset("select * from table1 where status > 100")
'テーブルのみでなくクエリに対してもSQLを実行することができます
'Set MyTable = MyDB.OpenRecordset("select * from [クエリ1] where [name]='きょうは'")

'レコードを返さないため不可能→("insert into table1(name,status) values('テスト書き込み',9999)")
'
'テーブル名が table-1 、フィールド名が name=A のような名前の場合には演算子と判断されてしまうため[]で囲む
'Set MyTable = MyDB.OpenRecordset("select * from [table-1] where [name=A] ='111'")
'
'--------------EOFのチェック---------------
'If MyTable.EOF = True Then 'レコードのEOFのチェック
'    Debug.Print "EOFです"
'End If

'-------------データベースが更新可能かどうか True : 更新可能---------
'Debug.Print MyTable.Updatable

'-------------現在の位置と値----------------
'Debug.Print MyTable.RecordCount '先頭を1とした現在のレコード位置
'Debug.Print MyTable![Name] '現在のレコード位置の値を取り出す
'Debug.Print MyTable![Status]

'-------------テーブルの値をすべて表示するには------------------
'MyTable.MoveFirst '先頭の位置に移動
'Do While Not MyTable.EOF 'EOFになるまでループ
'    Debug.Print MyTable![Name] '現在のレコード位置の値を表示
'    Debug.Print MyTable![Status]
'    MyTable.MoveNext
'Loop


'ただし、テーブルの値がNULLの場合においては、上記ではエラーが発生します
'そのため次のように判定する必要があります
'Dim str As String
'フィールドがNULLの場合があるため
'If Not IsNull(MyTable![Name]) Then
'	str = Trim(MyTable![Name])
'Else
'	str = ""
'End If

'--------------レコードの移動---------------
'MyTable.MoveLast 'レコードの最後に移動 レコードが無い場合はエラーがでます
'MyTable.MoveFirst '先頭レコードに移動
'MyTable.MoveNext '次のレコードに移動
'MyTable.Move (1) '先頭を0から数えた位置に移動

'--------------レコードの追加---------------
'MyTable.AddNew '新しいレコードの追加
'MyTable![Name] = "inaba1" '     ↑一行追加するごとにUpdateする必要あり
'MyTable![Status] = 101 '        ↓
'MyTable.Update 'データーベースに反映

'--------------文字列の名前を使って読み出し・変更--------------------
''読み出し
'Debug.Print MyTable.Fields("Name") '現在のレコード位置の値を表示

''変更
'MyTable.Edit
'MyTable.Fields("Name") = 10
'MyTable.Update

'---------------レコードの削除--------------
'MyTable.Delete '現在の位置のレコードを削除

'---------------レコードの総数を出すには--------
'MyTable.MoveLast 'レコードの最後に移動 レコードが無い場合はエラーがでます
'Dim count As Integer
'count = MyTable.RecordCount
'Debug.Print count

'---------------結果を返さないSQL文を実行------------
'最小の status 値を持つレコードを削除するSQL文を実行
'Dim strSQL As String
'strSQL = ""
'strSQL = strSQL & " DELETE *"
'strSQL = strSQL & " From table1"
'strSQL = strSQL & " WHERE (((status)=(SELECT Min(status) AS mintime FROM table1)));"
'MyDB.Execute strSQL

'---------------結果を返すSQL文を実行------------
'最大の status 値を持つレコードを返す
'Dim RecPos As Recordset
'Set RecPos = MyDB.OpenRecordset("SELECT * FROM table1 WHERE (((status)=(SELECT MAX(status) AS MaxNo FROM table1)));")
'debug RecPos![status]
'RecPos.Close

'---------------インデックスの作成と削除------------
'インデックスを張る
'Call MyDB.Execute("CREATE INDEX インデックス名 ON [テーブル名]([レコード名])")
'インデックスを削除する
'Call MyDB.Execute("DROP INDEX インデックス名 ON [テーブル名]")

'-------------終了処理----------------
MyTable.Close
MyDB.Close




▲トップページ > Visual BASIC と C#