我有一个Access数据库,它使用驻留在SQL Server上的链接表。对于其中一个表,我创建了一个简单的表单,显示了基础表的几个字段。
我想使用组合框切换记录,所以我使用组合框向导添加了一个,我选择了“根据我在组合框中选择的值在表单上查找记录”选项。
组合框有效,但我注意到只要选择了新值,Access就会在显示所选记录之前暂时返回第一条记录。我可以通过注意屏幕闪烁(例如,绑定字段简要显示来自第一个记录的数据)以及分析对SQL Server的调用来验证这一点,在那里我可以看到第一个记录的一个查询,另一个查询选择的记录。
如果我使用表单底部的下一个/上一个导航按钮,则不会发生此问题。
如何避免这种不必要的查询?
答案 0 :(得分:0)
使用向导所做的是在你的组合框点击事件背后创建一个宏。它可能看起来像.. , , First, ="[SomeField] = " & Str(Nz(Screen.ActiveControl,0))
..您可以实际执行的操作,而不是使用宏,可以使用类似this
如果我们看一下Macro做了什么(或者它接受了什么参数),那么你可能会更清楚地知道为什么会遇到这种行为。
第一个参数是Object Type
然后是Object Name
,然后是Record
,然后是Offset
。
Object Type
- 包含所需记录的对象类型
使当前。单击表,查询,表单,服务器视图,存储
“操作”中“对象类型”框中的过程或函数
“宏生成器”窗格的“参数”部分。留下这个论点
空白以选择活动对象。 < - 您的内容将留空,因为您在表单上引用了组合框 Object Name
- 包含您的记录的对象的名称
想要制作当前的记录。 “对象名称”框显示全部
Object所选类型的当前数据库中的对象
输入参数。如果将“对象类型”参数留空,请保留
这个论点也是空白的。 < - 因为第一个留空了 Record
- 制作当前的记录
记录。单击上一个,下一个,第一个,最后一个,转到或新建
记录框。默认值为Next。 < - 这对我来说违反了First,也可能对你而言,可能是为什么你会看到这个'奇怪的'行为 Offset
- 一个求值为整数的整数或表达式。一个
表达式必须以等号(=)开头。这个论点
指定要创建当前记录的记录。你可以使用
偏移参数有两种方式:当Record参数为Next或
以前,Microsoft Office Access 2007会移动记录数
在Offset参数中指定的向前或向后。当。。。的时候
记录参数是Go To,Access移动到带有数字的记录
等于Offset参数。记录号显示在
窗口底部的记录编号框。注意如果您使用
Record参数Access的First,Last或New设置
忽略Offset参数。如果输入的是Offset参数
太大,Access显示错误消息。你无法进入
Offset参数的负数。我希望我能为您提供更多详细信息,但我没有将Access与SQL Server结合使用,因此如果考虑到这一点,我就没有任何见解。