我在SQL Server 2012中有一个表(Table1
),我创建了一个MS Access 2016数据库,然后使用系统DSN在SQL Server 2012中的Table1
MS Access中创建了一个链接表
这很好用,我可以在MS Access 2016中打开链接的Table1,查看列并更新值。然后我在MS Access 2016中创建了一个表单,将表1中的列添加到表单中,我可以看到数据正常。
我遇到的问题是添加新记录的选项是灰色的,无论我尝试什么,我都无法使用表格向Table1
添加新记录。
如果我在MS Access 2016中创建标准(而不是链接表)并将列添加到表单而不是链接表1中的列,则可以使用“添加新记录”图标。
我的问题是......是否可以在MS Access 2016中使用表单,将数据源作为SQL Server 2012中的表的链接表并向其中添加新记录? (如果是这样的话,我怎么做到这一点,因为我现在已经持续了好几个小时而无法理解它。)
非常感谢提前。
答案 0 :(得分:1)
您注意到单击链接表并查看行时可以更新值。
使用该链接表时可以添加行吗?如果你不能,那么使用SQL Management Studio打开表并尝试以这种方式添加行?
如果在SQL Server中没有设置或增加主键的正确(或任何)设置,则无法添加行(在此上下文中自动)。
因此,请确保该表具有主键,请确保您可以使用SSMS添加行。如果您更改以修复此SQL表,则必须重新链接该表。
我建议你在SQL表中创建一个主键,并使其成为一个增量为1的标识列。
答案 1 :(得分:0)
当然可能;这是一种非常常见的方法。听起来您在系统DSN中用于连接到SQL Server的登录名对表没有INSERT权限。您是否可以查看权限以进行检查?
答案 2 :(得分:-1)
也有类似情况。链接的Sql Server表,访问表单前端。我可以通过表格插入/更新/删除。但是,然后我创建了一个复选框,以对数据实施过滤器。如果未选中该框,我仍然可以编辑数据。但是,一旦我选中复选框以激活过滤器,我就无法再插入/更新/删除。取消选中该复选框后,我可以再次编辑数据。因此,在我的情况下,问题出在过滤器上,该过滤器是通过同时涉及外部联接和联合的VBA查询实现的。该查询在激活后将替换表单的控制源,我相信它太复杂了,以至于Access都无法将其视为可更新的。
答案 3 :(得分:-2)