我正在分发ms-access-2007前端。后端是sql server。用户点击一个按钮,它将从sql server2008数据库返回一个查询。
如果用户再次单击该按钮,是否可以重新查询此查询?
通常,access的行为是,如果您再次查询它,它会显示旧的结果。如何使其刷新结果?
发布于 2010-10-22 08:56:46
如果您知道查询仍然是ActiveDatasheet,请重新查询:
Screen.ActiveDatasheet.Requery如果您不知道这一点(您可以检查Screen.ActiveDatasheet.Name),您可以再次打开它(如果查询已经打开,那么可能会重新查询,也可能不会重新查询--我希望它不会重新查询,但我可能错了),然后它将是ActiveDatasheet,您可以重新查询它。
或者,您可以这样做:
DoCmd.SelectObject acQuery, "NameOfYourQuery"
Screen.ActiveDatasheet.Requery当然,这些方法中的一个或多个将会起作用。
但我要指出的是,将表和查询用作用户界面对象并不是一个好主意。相反,您应该使表单允许用户与其中显示的数据进行交互,因为这使您可以对它们进行更多的控制。
(许多人不知道的一件事是数据表是一个表单对象,因此Screen.ActiveDatasheet的属性和方法与任何表单的属性和方法都是相同的,这意味着您实际上可以为Screen.ActiveDatasheet对象上的事件赋值并触发它们;但我不建议将其作为构建UI的最简单方法……)
发布于 2010-10-22 05:30:06
如果您的数据所在的表单与链接到Sql Server的Access表或查询绑定在一起,则可以使用form.requery。
如果再次查询,将显示旧的results
我不同意你上面的说法。如果重新打开表单或查询,将始终获得最新的值。刷新时,会将这些记录更新为最新值,但会忽略新记录。重新查询将完全重新填充表单/记录集。
https://stackoverflow.com/questions/3991948
复制相似问题