不确定是否有明确的答案,但我有一个带有SQL Server 2008的Ms Access应用程序作为数据存储,所有表都从Access应用程序链接到SQL Server,该应用程序托管在Citrix服务器上。 应用程序中的所有表单都是绑定表单。当我尝试编辑或保存表单挂起的数据时,有一种特殊形式最近导致问题,我必须终止会话。表单链接到SQL服务器上的表,并且表具有Identity列作为主键,我觉得奇怪的是这个表单甚至没有像任何其他表单那样大量使用,并且表甚至没有任何记录的一半其他利用率很高的表。表单上只有4个字段,只有一个字段是Nvarchar,其他表单有更多Nvarchar字段,利用率和数据更多,它们似乎没有引起任何问题。我排除了网络问题,因为这会影响整个应用程序,而不仅仅是一种形式,SQL服务器上的索引也是每天构建的,所以我不认为它也是一个索引问题。有没有人知道为什么会这样。
答案 0 :(得分:2)
尝试重建Access前端。创建一个新数据库,设置特定于数据库的选项以匹配(字段行为,关闭或打开自动名称跟踪,SQL语法级别等),然后从旧的Access导入所有表单,报表,宏,vb代码和数据数据库进入新的。正确设置启动选项,看看是否有更好的。
访问数据库可能会受到轻微破坏,完全重建有时是修复它们的唯一方法。
确保备用。
答案 1 :(得分:2)
如果您怀疑表单已损坏,可以使用SaveAsText
和LoadFromText
方法将表单定义另存为文本文件,然后使用其他名称重新加载。
Application.SaveAsText acForm, "frmMainMenu", "frmMainMenu.txt"
Application.LoadFromText acForm, "frmMainMenu_new", "frmMainMenu.txt"
这些方法并不像Erik的建议那么全面,但它们快速而简单。您也可以尝试反编译来修复损坏。请在此链接中查看2个答案:HOW TO decompile and recompile
如果损坏不是导致问题的原因,您可以尝试在中断(调试)模式下单步执行表单代码。在表单的打开过程中的第一个可执行行上放置一个临时断点。如果您没有表单打开的过程,请添加一个。如果您不熟悉设置临时断点,只需添加单词Stop
:
Private Sub Form_Open(Cancel As Integer)
Stop
然后在打开表单后,您可以使用F8
键一次单步执行代码。希望您能够识别导致代码挂起的行。