Несколько раз проходить запросы при добавлении данных в локальную таблицу - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю над устаревшим приложением 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 раза.Как и почему это происходит.?Как можно решить эту проблему, чтобы запрос был запущен только один раз.Это правильный способ сделать?Или есть лучший способ сделать это, чтобы я мог оптимизировать свой код и повысить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...