Я работаю над устаревшим приложением MS Access, чтобы улучшить производительность, и я очень новичок в приложении MS Access.Мне нужно отображать данные в виде таблицы в форме при загрузке.Источник записи для формы установлен как «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.
Есть еще одно дополнениеquery - 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 находит идентификатор элемента и задает определение запроса CurrentTableDetails, затем вызывает OpenQuery для AppendTableDetails и затем запрашивает объект таблицы.
Код:
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 раза.Как и почему это происходит.?Как можно решить эту проблему, чтобы запрос был запущен только один раз.Это правильный способ сделать?Или есть лучший способ сделать это, чтобы я мог оптимизировать свой код и повысить производительность.