1

我正在使用 MS Access 2003 打开一个链接到 SQL Server 2005 标准后端的 MS Access 2000 .mdb(我已经使用 MSSQL 和本地 Jet 表测试并复制了我的问题,因此它会适得其反用 SQL Server 标记这个问题)。

我有一个子数据表,其中子表单中的每条记录都有 11 条记录。如果子表单中的记录数很少(7-10 条记录),则子数据表中的小 [+] 会按预期运行。

但是,当子表单中的记录数为 40-48 条记录时,行为会发生变化。我单击小加号/扩展图标,Access 会根据需要扩展该区域,但它完全是白色/空白,并且没有显示数据。我必须先单击子表单记录,然后在子数据表显示任何数据之前单击扩展图标。在这种情况下还有其他奇怪的行为,但这是我发现的唯一一致且可靠的方法,可以使子数据表的数据出现在该子表单记录中。

以下屏幕截图显示了使用我讨论的技巧以及空白数据场景的成功扩展:

子表单和子数据表的屏幕截图

谷歌搜索被证明是徒劳的,以下是我能找到的最好的:

另请注意,将子数据表添加到大表可能会对表的性能产生不利影响。-- MS Office 文章,添加子数据表

我不认为 40-48 条记录符合“大”的条件,我也不认为“表现”是“奇怪行为”的同义词。

我尝试过的事情:

  • 使子数据表的源查询只读。
  • 将 SubDatasheetName 从 [Auto] 更改为显式声明的源查询。
  • 限制子数据表的源查询中的记录数,以便每个子表单的记录只有 2-4 个子数据表行。
4

1 回答 1

0

我相信我已经找到了合适的解决方法。

放:

Me.Refresh
DoEvents

OnCurrent主要形式的情况下似乎在大多数情况下都可以解决问题。仍然偶尔会有一个怪癖,但只需更改数据表(而不是子数据表)中的某些内容似乎会使 Access 加载所有数据,并且它会按预期显示和运行。

其他修复/解决方法表示赞赏、欢迎,并将进行适当的投票。

于 2012-12-10T19:41:03.327 回答