【问题标题】:Access Application with SQL backend blanking form details使用 SQL 后端消隐表单详细信息访问应用程序
【发布时间】:2012-09-30 04:18:30
【问题描述】:

我有一个古老的 Access 应用程序,我最近使用 SQL Server 迁移助手将数据移动到了 SQL 后端,除了一个问题外,几乎所有东西都可以正常工作。

在应用程序中,我们有一个表单,其中包含另一个表单。外部表单查找输入到系统中的特定“问题”,然后查找与此问题相关的历史记录(内部表单)。如果存在历史记录,则它可以完美运行,因为记录以嵌入形式显示就很好。但是,如果数据库中还没有历史记录,则嵌入表单的整个详细信息部分将完全空白。所有属性都设置为与纯 Access 数据库时完全相同,但现在我已将其切换为使用链接表从 SQL 中提取,当我没有可从中提取的记录时,表单现在为空白。

编辑:我了解到有两个条件同时满足时会导致表单的详细信息窗格变为空白:(1) 没有要显示的现有记录,以及 (2) 无法添加新记录记录。

这意味着第二个条件是我的问题所在。我尝试滚动到 Access 中每个链接表的底部,对于历史记录表,我无法添加任何新行,但对于问题表,我可以。出于某种原因,有些东西让我无法编辑这张表。

【问题讨论】:

  • 删除历史表的链接(或将其重命名为其他名称)。然后创建一个指向同一个 SQL Server 表的新链接,并查看 Access 是否询问您将哪个字段用作主键。如果发生这种情况,并且您为其提供唯一标识每一行的字段,您可能会发现新链接为您提供了编辑能力。
  • 这确实最终解决了我的问题。我什至不必发布第二个问题:)。谢谢。

标签: ms-access ms-access-2010


【解决方案1】:

我认为当子表单的记录源(您的“内部表单”)是只读的时,您描述的行为可能会发生。当存在匹配行时,将显示它们。但是,当不存在匹配的行时,您不能添加行,因此子窗体的绑定数据控件被禁用。

在设计视图中打开子表单。选择表单并打开其属性表 (Alt+Enter)。在属性表的数据选项卡上找到记录源属性。如果属性值是 SELECT 语句,请将其复制并粘贴到新 Access 查询的 SQL 视图中,然后将查询切换到数据表视图。如果属性是表的名称或保存的查询,请直接在数据表视图中打开该对象。

在数据表视图中打开表单的记录源后,是否可以添加一行?如果没有,请确保 SQL Server 用户对数据源具有 INSERT 权限。但是,即使具有 INSERT 权限,如果 Access 无法识别唯一标识每一行的字段或字段组合,它也可能已将数据源链接为只读。如果是这种情况,您可能需要重新链接表并告诉 Access 将哪个字段用作主键。

【讨论】:

  • 我认为您在第二部分有所了解。我刚刚发现由于某种原因我从一个表中获得了只读行为。当我确定时我会报告。谢谢!
  • 这绝对是某种权限问题。我仍在研究解决我的情况的具体细节,但现在我确定知道原因是什么以及如何解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多