Archive for the ‘Access’ Category

  1. Hello, DAO World!

    Posted on 3月 22nd, 2012 by cx20

    DAO

    DAO(Data Access Object)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    主に Jet データベース(Access MDB)との接続に用いられるが、ODBC 経由で他の DBMS への接続も可能である。
    長い間 DAO は 32bit 版のみしか提供されていなかったが、DAO 12 より 64bit 版が提供されるようになった。

    クライアントアプリケーション データベースエンジン 推奨されるデータベース形式
    Access 2.0 Jet 2.0 *.mdb (Jet 2.0)
    Access 95 Jet 3.0 *.mdb (Jet 3.x)
    Access 97 Jet 3.5 *.mdb (Jet 3.x)
    Access 2000 Jet 4.0 *.mdb (Jet 4.x)
    Access 2002 Jet 4.0 *.mdb (Jet 4.x)
    Access 2003 Jet 4.0 *.mdb (Jet 4.x)
    Access 2007 ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Access 2010 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Access 2010 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)
    DAO 3.0 Jet 3.0 *.mdb (Jet 3.x)
    DAO 3.5 Jet 3.5 *.mdb (Jet 3.x)
    DA0 3.6 Jet 4.0 *.mdb (Jet 4.x)
    DA0 12 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    DA0 12 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)
    Microsoft.Jet.OLEDB.3.51 Jet 3.5 *.mdb (Jet 3.x)
    Microsoft.Jet.OLEDB.4.0 Jet 4.0 *.mdb (Jet 4.x)
    Microsoft.ACE.OLEDB.12.0 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Microsoft.ACE.OLEDB.12.0 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)

    ソースコード(VBScript + DAO + Jet データベース)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim dbe
        Dim db
        Dim rs
     
        Set dbe = CreateObject("DAO.DBEngine.36")
        Set db = dbe.OpenDatabase("Hello.mdb")
        Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-----------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        db.Close
    End Sub

    ソースコード(VBScript + DAO + ACE データベース)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim dbe
        Dim db
        Dim rs
     
        Set dbe = CreateObject("DAO.DBEngine.120")
        Set db = dbe.OpenDatabase("Hello.accdb")
        Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-----------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
    End Sub

    ソースコード(VBScript + DAO + ODBC + SQL Server)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim dbe
        Dim db
        Dim rs
     
        Set dbe = CreateObject("DAO.DBEngine.36")
        Set db = dbe.OpenDatabase("", False, False, _
            "ODBC;Driver={SQL Server};" & _
            "SERVER=(local);DATABASE=master;" & _
            "UID=sa;PWD=P@ssW0rd;")
        Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-----------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        db.Close
    End Sub

    ソースコード(VBScript + DAO + ODBC + Oracle)

    Option Explicit
     
    Const dbOpenSnapshot = 4
    Const dbSQLPassThrough = 64
     
    Call Main()
     
    Sub Main()
        Dim dbe
        Dim db
        Dim rs
     
        Set dbe = CreateObject("DAO.DBEngine.36")
        Set db = dbe.OpenDatabase("", False, False, _
            "ODBC;Driver={Oracle in OraDb11g_home1};" & _
            "DBQ=ORCL;" & _
            "UID=scott;PWD=tiger;")
        Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message")
        ' パススルークエリの例(データベース側に依存する SQL を実行する場合)
        'Set rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message FROM DUAL", dbOpenSnapshot, dbSQLPassThrough)
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-----------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        db.Close
    End Sub

    実行方法(Windows)

    C:¥> CScript //Nologo Hello.vbs

    実行結果

    Message
    -----------------
    Hello, DAO World!
  2. Hello, ACE Database World!

    Posted on 3月 10th, 2012 by cx20

    ACE Database

    ACE Database Engine(Access データベースエンジン) は Jet データベースエンジンの後継の DBMS エンジンである。Access 2007 以降 のデータベース(.accdb)のエンジンとしても使用されている。

    クライアントアプリケーション データベースエンジン 推奨されるデータベース形式
    Access 2007 ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Access 2010 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Access 2010 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)
    DA0 12 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    DA0 12 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)
    Microsoft.ACE.OLEDB.12.0 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Microsoft.ACE.OLEDB.12.0 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)

    ソースコード(VBScript + DAO + ACE データベース)

    Set dbe = CreateObject("DAO.DBEngine.120")
    Set db = dbe.OpenDatabase("Hello.accdb")
    Set rs = db.OpenRecordset("SELECT 'Hello, ACE Database World!' AS Message")
    WScript.Echo rs(0).Name
    WScript.Echo "--------------------------"
    WScript.Echo rs(0).Value

    ソースコード(VBScript + ADO + OLEDB + ACE データベース)

    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Hello.accdb"
    Set rs = cn.Execute("SELECT 'Hello, ACE Database World!' AS Message")
    WScript.Echo rs(0).Name
    WScript.Echo "--------------------------"
    WScript.Echo rs(0).Value

    ソースコード(VBScript + ADO + ODBC + ACE データベース)

    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\hello.accdb"
    Set rs = cn.Execute("SELECT 'Hello, ACE Database World!' AS Message")
    WScript.Echo rs(0).Name
    WScript.Echo "--------------------------"
    WScript.Echo rs(0).Value

    実行方法(Windows)

    C:¥> CScript //Nologo Hello.vbs

    実行結果

    Message
    --------------------------
    Hello, ACE Database World!
  3. Hello, Jet Database World!

    Posted on 3月 9th, 2012 by cx20

    Jet Database

    Jet Database Engine はマイクロソフトが開発した小規模向けの DBMS エンジンである。Access データベース(.mdb)のエンジンとしても使用されている。
    通常、Jet データベースへのアクセスは、DAO(Data Access Object)または ADO(ActiveX Data Objects)といった COM ベースの API が用いられる。

    クライアントアプリケーション データベースエンジン 推奨されるデータベース形式
    Access 2.0 Jet 2.0 *.mdb (Jet 2.x)
    Access 95 Jet 3.0 *.mdb (Jet 3.x)
    Access 97 Jet 3.5 *.mdb (Jet 3.x)
    Access 2000 Jet 4.0 *.mdb (Jet 4.x)
    Access 2002 Jet 4.0 *.mdb (Jet 4.x)
    Access 2003 Jet 4.0 *.mdb (Jet 4.x)
    DAO 3.0 Jet 3.0 *.mdb (Jet 3.x)
    DAO 3.5 Jet 3.5 *.mdb (Jet 3.x)
    DA0 3.6 Jet 4.0 *.mdb (Jet 4.x)
    Microsoft.Jet.OLEDB.3.51 Jet 3.5 *.mdb (Jet 3.x)
    Microsoft.Jet.OLEDB.4.0 Jet 4.0 *.mdb (Jet 4.x)

    ソースコード(VBScript + DAO + Jet データベース)

    Set dbe = CreateObject("DAO.DBEngine.36")
    Set db = dbe.OpenDatabase("Hello.mdb")
    Set rs = db.OpenRecordset("SELECT 'Hello, Jet Database World!' AS Message")
    WScript.Echo rs(0).Name
    WScript.Echo "--------------------------"
    WScript.Echo rs(0).Value

    ソースコード(VBScript + ADO + OLEDB + Jet データベース)

    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Hello.mdb"
    Set rs = cn.Execute("SELECT 'Hello, Jet Database World!' AS Message")
    WScript.Echo rs(0).Name
    WScript.Echo "--------------------------"
    WScript.Echo rs(0).Value

    ソースコード(VBScript + ADO + ODBC + Jet データベース)

    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb"
    Set rs = cn.Execute("SELECT 'Hello, Jet Database World!' AS Message")
    WScript.Echo rs(0).Name
    WScript.Echo "--------------------------"
    WScript.Echo rs(0).Value

    実行方法(Windows)

    C:¥> CScript //Nologo Hello.vbs

    実行結果

    Message
    --------------------------
    Hello, Jet Database World!