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 [关闭]
如果使用默认加密(高安全性)保护密码,是不是无法使用 Excel 访问 Access 2010 数据库?
我可以将 MS Access 应用程序链接到 Linux 服务器上的 Postgresql 吗?可以/我应该使用 ODBC 吗?