Access 2010 访问PostgreSQL 无法更新

Posted

技术标签:

【中文标题】Access 2010 访问PostgreSQL 无法更新【英文标题】:Access 2010 accessing PostgreSQL can not update 【发布时间】: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

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

【问题讨论】:

这有帮助吗?不确定,但这可能是一个开始:support.microsoft.com/kb/276035 VBA Code to Add Linked Table with Primary Key的可能重复 谢谢!看起来这是一个主键问题。当我将 PK 添加到表中时,它工作得很好。 【参考方案1】:

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

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

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

可能的解决方案是:

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

【讨论】:

以上是关于Access 2010 访问PostgreSQL 无法更新的主要内容,如果未能解决你的问题,请参考以下文章

将 MS Access 迁移到 PostgreSQL [关闭]

Access 2010:拆分数据库后无法访问查询

循环访问整个 Access 2010 列表框

如果使用默认加密(高安全性)保护密码,是不是无法使用 Excel 访问 Access 2010 数据库?

我可以将 MS Access 应用程序链接到 Linux 服务器上的 Postgresql 吗?可以/我应该使用 ODBC 吗?

访问 2010 递归数据