2015/04/04

Access で 動的に PostgreSQL のリンクテーブルを作成する方法


Access 2010 で  VBA で動的に PostgreSQL のリンクテーブルを作成するのに苦労したのでコードを載せておきます。

コードは PostgreSQL 用ですが、ODBC データベース、例えば SQL Server でもドライバー名とスキーマの部分を変更すれば動作すると思います。

ただ、Access のリンクテーブルは、主キーを設定しないと読み取り専用なのがネックですね。コードではパスワードは保存できるようにしているのですが、主キーの設定方法はまた調べたいと思います。

(2015/04/05追記)

主キーの設定方法は、下記記事を参考にしてください。

(追記ここまで)

■事前準備

事前に PostgreSQL の ODBC ドライバーをインストールしておく必要があります。詳しくは以下の記事を参考にしてください。

■ソースコード

ソースコードは以下のようになります。

詳しい部分は、コメントを参考にしてください。

Private Sub commandLink_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim cDb As DAO.Database
    Dim cTbDef As DAO.TableDef
    Dim pDb As DAO.Database
    Dim pTbDef As DAO.TableDef
    Dim pTbNm As String
    Dim conStr As String
    
    
    'DRIVERは64ビット用、32ビットは変更の必要あり
    conStr = "ODBC;DRIVER={PostgreSQL Unicode(x64)};SERVER=localhost;DATABASE=postgres;UID=user01;PWD=password@1"
    
    'Open Access DB
    Set cDb = CurrentDb
    
    'Open ODBC/PostgreSQL DB
    Set pDb = DBEngine.OpenDatabase("", False, False, conStr)
    
    'テーブル定義一覧をループ
    For Each pTbDef In pDb.TableDefs
        
        pTbNm = pTbDef.Name
        
        'ユーザーテーブル(スキーマ)のみ処理
        If Left(pTbNm, 7) = "public." Then
        
            Set cTbDef = cDb.CreateTableDef("dbo_" & Mid(pTbNm, 8))
            cTbDef.SourceTableName = Mid(pTbNm, 8)
            cTbDef.Connect = conStr
            
            'リンクテーブルにパスワードを保存する
            cTbDef.Attributes = cTbDef.Attributes Or dbAttachSavePWD
            
            'リンクテーブルを追加
            cDb.TableDefs.Append cTbDef
            
        End If
    
    Next
    
    cDb.Close
    pDb.Close
    
    Set cDb = Nothing
    Set pDb = Nothing
End Sub

■参考サイト


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから