我正在研究传统的MS访问应用程序以提高性能,我对ms访问应用程序非常新 . 我需要在加载时以表格形式显示数据 . 表单的记录源设置为“TableEntries”(选择查询)查询看起来像 -
Select TableDetails.Col1,TableDetails.Col12,TableDetails.Col3,TableDetails.Col4,TableDetails.Col5
From TableDetails
Where TableDetails.Col1= [forms]![TableDisplay]![Criteria1])
And
TableDetails.Col2= [forms]![TableDisplay]![Criteria2])
其中“TableDetails”是MS Access本地表 .
还有另一个追加查询 - AppendTableDetails - 使用传递查询将数据附加到TableDetails - “CurrentTableDetails” .
AppendTableDetails:
INSERT INTO TableDetails
SELECT col1,col2,col3,col4,col5
From CurrentTableDetails
Where CurrentTableDetails.Id=DLookUp("[ID]","CurrentInfo"))
And CurrentTableDetails.ParentId=DLookUp("[ParentId]","CurrentInfo"))
CurrentInfo是另一个本地表
CurrentTableDetails:
Select * from [dbo].[GetTableDetails] where ItemId = 1234
在加载表单时,VBA代码找到项目Id并设置CurrentTableDetails的查询定义,然后为AppendTableDetails调用OpenQuery,然后重新查询表对象 .
代码:
CurrentDb.QueryDefs("CurrentSIP_Detail").sql = "Select * from [dbo].[GetTableDetails] where ItemId = 1234"
DoCmd.OpenQuery "AppendTableDetails "
Me.Child0.Requery
现在,我打开了SQL分析器来跟踪在表单加载时触发的查询 . 执行时
DoCmd.OpenQuery "AppendTableDetails "
[dbo] . [GetTableDetails]被调用3次 . 这是怎么回事以及为什么会这样 . 如何解决这个问题,以便只触发一次查询 . 这是正确的方法吗?或者有更好的方法来做到这一点,以便我可以优化我的代码并提高性能 .