1

MS-Access 2010 で Postgres リンク テーブルを (ODBC 経由で) 自動的にリンクおよび更新する VBA 手順を知っている人はいますか? それは、ユーザーにとって物事をより簡単にするために、DSN を使用しない接続を探しているからです。

4

1 に答える 1

2

次の VBA コードは、DSN なしの接続で PostgreSQL リンク テーブルを作成します...

Sub linkTo_PostgreSQL()
    createLinkedTable_PostgreSQL "public.table1"
    ' repeat as necessary...
End Sub

Sub createLinkedTable_PostgreSQL(PostgreSQL_tableName As String)
    Dim cdb As DAO.Database, tbd As DAO.TableDef
    Set cdb = CurrentDb
    Set tbd = New DAO.TableDef

    tbd.Connect = "ODBC;Driver={PostgreSQL ODBC Driver(UNICODE)};Server=localhost;Port=5432;Database=linkedDB;Uid=pgUser1;Pwd=pgUser1password;"
    tbd.SourceTableName = PostgreSQL_tableName
    tbd.Name = Replace(PostgreSQL_tableName, ".", "_", 1, -1, vbTextCompare)  ' e.g. "public.table1"->"public_table1"
    tbd.Attributes = dbAttachSavePWD

    cdb.TableDefs.Append tbd
    Set tbd = Nothing
    Set cdb = Nothing
End Sub

次のコードは、既存の PostgreSQL リンク テーブルのリンクを更新します。

Sub refreshLinked_PostgreSQL()
    Dim cdb As DAO.Database, tbd As DAO.TableDef
    Set cdb = CurrentDb
    For Each tbd In cdb.TableDefs
        If tbd.Connect Like "ODBC;Driver={PostgreSQL*" Then
            Debug.Print "Refreshing [" & tbd.Name & "] ..."
            tbd.RefreshLink
        End If
    Next
    Debug.Print "Done."
    Set tbd = Nothing
    Set cdb = Nothing
End Sub
于 2013-03-16T14:00:13.677 に答える