MS Access 2007 - 导入表后,记录集不再可更新
Posted
技术标签:
【中文标题】MS Access 2007 - 导入表后,记录集不再可更新【英文标题】:MS Access 2007 - After importing tables, recordsets are no longer updateable 【发布时间】:2014-12-23 19:50:01 【问题描述】:我们在我工作的公司有一个内部程序,在 MS Access 内部,我们将所有表格链接到我们的三个数据库。然而;为了为学生创建新的路线,有人需要我们的程序的一个独立副本来使用,它不会影响实际的数据库。
删除链接表、将它们全部导入本地并保存 .mdb 后,我无法再更改大多数表单中的值。例如:
将出现一个下拉菜单,其中包含学生可能的路线代码列表。通常你可以选择一个。您不再能够,并且在左下角您会看到“此记录集不可更新”。
我对此有点陌生,但我无法想象为什么导入表格会破坏任何东西。我不希望发生任何关键违规行为(就像我在链接表时可能发生的那样)或任何类似性质的事情。如果有人能指出我正确的方向,将不胜感激!谢谢!
【问题讨论】:
那么,您有一个为 3 个前端数据库提供表的后端数据库,并且您复制了一个前端并将所有后端表导入到前端的本地副本中?跨度> 检查权限问题以及表是否维护了它们的主键。是否有任何可以锁定表单/控件的 VBA(代码)? Locked = True 在该组合框的属性中吗?允许编辑吗? 本地导入表时,是否添加了主键? 关于您的第一条评论:正确。如何检查权限问题?我没有收到任何通知。我现在正在网上搜索,但如果你有一个链接作为分享的参考,我将不胜感激。我们说话的时候,我正在检查主键。 @mellamokb 不,我没有。 导入的表中没有找到主键。我重新添加了表的主键,PK 仅用于单列。对于具有多个 PK 的表(或者它们可能是外键?)我无法将主键添加到这些列。不太确定从这里去哪里。程序员刚离开公司,我对整体访问知之甚少(尽管我今天肯定会拿起一本书)。我只是跌跌撞撞地试图修补这个,这样他们就可以在新年之前完成它。再次感谢大家的帮助。 【参考方案1】:Access 可以处理链接表或视图上的复合主键。当然,重要的是确保您告诉 Access 使用正确的字段。当您链接到视图时,Access 不获取主键信息是很常见的(也许 ODBC 驱动程序没有传递该信息?),但我敢打赌,表也可能发生这种情况。 不确定这些图片是否会有所帮助,但希望它可以为您指明正确的方向。如下图所示,这是一个链接视图:
如果在设计视图中打开,可以看到没有主键:
这意味着表格不可编辑(添加新按钮为灰色):
所以我运行这个命令来告诉 Access 在链接视图上使用复合主键:
CurrentDb.Execute "Create Unique Index PrimaryKey On View_AssnsWithSorterField([Serial No], AssignmentDate)"
如果再次在设计视图中打开链接视图,可以看到复合主键:
现在出现添加新按钮。
您说您尝试添加复合主键,但 Access 不允许,这听起来像是表的数据或结构中的某些内容阻止它使用该键。如何在后端数据库中创建表的空副本,然后尝试链接到该副本?如果这仍然不起作用,那么可能存在唯一约束、触发器或表上的其他内容,导致 Access 不喜欢使其可更新。相反,如果它链接正常并且您可以在链接的空白测试表中添加/编辑记录,那么它必须是导致问题的真实表中的 data。 有时,如果您将表的副本切割成更小的块(例如可能只从主键列开始)并逐渐逐步重建它,您最终会遇到使 Access 无法更新的问题。
当然,另一种可能性是驱动程序本身的问题。链接到 SQLServer 和 Oracle 的 ODBC 驱动程序质量很好,可以处理复杂的主键,但我使用了链接到模糊数据库的垃圾驱动程序,它们无法处理复杂的事情,如子查询、联合查询等,即使你可以在数据库本身中做这些事情;该驱动程序仅用于处理基本的选择/插入/更新/删除,仅此而已。
【讨论】:
以上是关于MS Access 2007 - 导入表后,记录集不再可更新的主要内容,如果未能解决你的问题,请参考以下文章
MS-Access 2007:查询与至少有一条记录符合指定条件的个人相关的所有记录
ms-access 2007 运行时和 lockWindowUpdate
在 MS Access (2007-2013) 中删除除一个之外的所有表
使用类模块将可编辑的 ADO 记录集返回到 MS Access 表单