【问题标题】:Access 2010 accessing PostgreSQL can not updateAccess 2010 访问PostgreSQL 无法更新
【发布时间】:2015-01-28 04:38:29
【问题描述】:

我正在使用一个访问程序,它需要访问我们的 PostgreSQL 服务器上的一些数据。我遇到的问题是链接是只读的。如果我使用访问中的菜单项来创建链接,那么它可以正常工作。我的最终用户将使用运行时访问权限,因此无权访问菜单。

这是进行链接的代码:

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 ANSI};Server=10.10.10.200;Port=5432;Database=BIO-Static;" & _
    "UID=UserID;PWD=Password;"
    tbd.SourceTableName = PostgreSQL_tableName

    tbd.Name = Replace(PostgreSQL_tableName, ".", "_", 1, -1, vbTextCompare)
    ' e.g. "public.table1"->"public_table1"

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

如何让它以更新模式打开表格?

【问题讨论】:

标签: vba postgresql ms-access-2010 dao


【解决方案1】:

创建 ODBC 链接表时,Access 将使用远程表中的主键(如果有的话)。但是,如果

  • 远程表没有主键,或者
  • 您正在链接到远程数据库中的未索引视图

那么 ODBC 链接表将没有主键。在这种情况下,您将能够从 ODBC 链接表中读取数据,但无法对其进行更新。

可能的解决方案是:

  1. 向远程表添加主键,然后重新创建 ODBC 链接表,或者
  2. 创建 ODBC 链接表,然后使用 CREATE UNIQUE INDEX ...it 一个主键,如相关答案 here 中所述

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多