1

不确定是否有明确的答案,但我有一个使用 SQL Server 2008 作为数据存储的 Ms Access 应用程序,所有表都从 Access 应用程序链接到 SQL Server,该应用程序托管在 Citrix 服务器上。应用程序中的所有表格都是绑定表格。当我尝试编辑或保存表单永远挂起的数据并且我必须终止会话时,最近有一种特定的表单会导致问题。该表单链接到 SQL Server 上的一个表,并且该表具有 Identity 列作为主键,我觉得奇怪的是该表单甚至没有像任何其他表单那样频繁使用,而且该表甚至没有任何一半的记录其他大量使用的表。表格上只有 4 个字段,只有一个字段是 Nvarchar,其他形式有更多的 Nvarchar 字段,具有更多的利用率和数据,它们似乎不会引起任何问题。我正在排除网络问题,因为这会影响整个应用程序,而不仅仅是一种形式,SQL 服务器上的索引也是每天构建的,所以我认为这也不是索引问题。有谁知道为什么会发生这种情况。

4

2 回答 2

2

尝试重建您的 Access 前端。创建一个新数据库,设置您的数据库特定选项以匹配(字段行为、自动名称跟踪关闭或打开、SQL 语法级别等),然后从旧 Access 导入所有表单、报表、宏、vb 代码和数据数据库进入新的。正确设置启动选项,看看有没有更好的。

Access 数据库可能会受到轻微损坏,有时完全重建是修复它们的唯一方法。

确保您保留备份。

于 2012-08-03T02:20:50.150 回答
2

如果您怀疑表单已损坏,您可以使用SaveAsTextLoadFromText方法将表单定义保存为文本文件,然后用不同的名称重新加载它。

Application.SaveAsText acForm, "frmMainMenu", "frmMainMenu.txt"
Application.LoadFromText acForm, "frmMainMenu_new", "frmMainMenu.txt"

这些方法不像 Erik 的建议那样全面,但它们快速而简单。您也可以尝试反编译来修复损坏。请参阅此链接上的 2 个答案:如何反编译和重新编译

如果损坏不是问题的原因,您可以尝试在中断(调试)模式下单步执行表单代码。在窗体的打开过程的第一个可执行行上放置一个临时断点。如果您没有打开表单的过程,请添加一个。如果您不熟悉设置临时断点,您可以添加以下单词Stop

Private Sub Form_Open(Cancel As Integer)
    Stop

然后,在您打开表单后,您可以使用 键一次单步执行代码F8。希望您能够识别导致代码挂起的行。

于 2012-08-03T03:25:47.967 回答