Dim db As Object Dim rst As Object Set db = DBEngine.Workspaces(0).Databases(0) MsgBox db.Name Set rst = db.OpenRecordset("テーブルまたはクエリ名") Do Until rst.EOF Debug.Print rst("フィールド名") DoEvents rst.MoveNext Loop rst.Close: Set rst = Nothing db.Close: Set db = Nothing
OpenRecordsetメソッドにdbOpenDynasetなどの引数を指定したい場合
定数が使用できないので、下記を参考に数値を入力してください。
dbOpenTable | 1 |
dbOpenDynamic | 2 |
dbOpenDynaset | 3 |
dbOpenSnapshot | 4 |
SQL ServerのID列を持つテーブルを開くときは、dbSeeChanges(512)オプションを使用するようエラーが発生します。
その場合は以下のように開きます。
Set rst = db.OpenRecordset("テーブルまたはクエリ名", 2, 512)
Access2000以降ではデータベースをする際、上記のコードにある「DBEngine.Workspaces(0).Databases(0)」よりも「CurrentDb」の使用が推奨されているようです。
Set db = CurrentDb
また、別のデータベースを参照する必要があるときは以下のようにしてください。
Set db = DBEngine.Workspaces(0).OpenDatabase("Another.mdb")
FileSystemObjectを使用する場合、例のようにCreateObjectを利用するか
[ツール]-[参照設定]で[Microsoft Scripting Runtime]の参照追加が必要。
Function get_file_version(ByVal strFilePath As String) As String Dim cFSO As Object Dim stVersion As String 'FileSystemObjectのインスタンスを生成 Set cFSO = CreateObject("Scripting.FileSystemObject") 'ファイルのバージョンを取得する stVersion = cFSO.GetFileVersion(strFilePath) 'オブジェクト破棄 Set cFSO = Nothing get_file_version = stVersion End Function
Visual Basicでは改行を表現する際、vbCrLf
と表記しますが、
更新クエリ等で改行を含んだ処理をしたいときは利用できません。
その場合、以下のように改行を表現します。
Chr(13) & Chr(10)
Chr(10) = LF(ラインフィード)
Chr(13) = CR(キャリッジリターン)