MS Access 2007 - 导入表后,记录集不再可更新

时间:2014-12-23 19:50:01

标签: vba ms-access

我们在我工作的公司有一个内部程序,在MS Access内部,我们将所有表链接到我们的三个数据库。然而;为了给学生创建新的路线,有人需要我们的程序的孤立副本才能使用,这不会影响实际的数据库。

删除链接表后,在本地导入它们,并保存.mdb我不能再更改大多数表单内的值。例如:

将出现一个下拉菜单,其中包含学生可能的路线代码列表。通常你可以选择一个。你不再能够了,在左下角你会看到“这个记录集不可更新”。

我对此有点新意,但我无法想象为什么导入表会破坏任何东西。我不希望发生任何密钥违规(就像我可能在链接表时)或任何这种性质。如果有人能指出我正确的方向,我将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

Access可以处理链接表或视图上的复合主键。当然,重要的是确保您告诉Access正确使用的字段。当您链接到视图时,Access不能获取主键信息是常见的(可能ODBC驱动程序没有传递该信息?),但我敢打赌它可能发生在表中太。 不确定这些照片是否会有所帮助,但希望它可以指向正确的方向。这是一个链接视图,如下图所示:

enter image description here

如果在设计视图中打开它,则可以看到没有主键:

enter image description here

表示该表格不可编辑(添加新按钮显示为灰色):

enter image description here

所以我运行此命令告诉Access在链接视图上使用复合主键:

CurrentDb.Execute "Create Unique Index PrimaryKey On View_AssnsWithSorterField([Serial No], AssignmentDate)"

如果再次在设计视图中打开链接视图,则可以看到复合主键:

enter image description here

现在出现添加新按钮。

enter image description here

你说你试图添加一个复合主键,但是Access不允许它,这听起来像表的数据或结构阻止它使用该键。如何在后端数据库中创建表的空副本,然后尝试链接到那个?如果仍然无法正常工作,那么表格中可能存在唯一约束,触发器或其他因素导致Access不喜欢使其可更新。相反,如果链接正常并且您可以在链接的空白测试表中添加/编辑记录,那么它必须是真实表中导致问题的数据。 有时,如果你将表的副本缩小为较小的块(例如可能只是从主键列开始)并逐步逐步重建它,那么最终会遇到使Access无法更新的事情。

当然,另一种可能性是驱动程序本身存在的问题。链接到SQLServer和Oracle的ODBC驱动程序质量很好,可以处理复杂的主键,但是我使用了链接到模糊数据库的垃圾驱动程序,它们无法处理子查询,联合查询等复杂事物。即使你可以在数据库中做这些事情;驱动程序只是为了处理基本的select / insert / update / deletes而编写的,就是这样。