2014-08-13 1 views
0

У меня есть небольшая программа в MS Access с тремя основными форматами поиска: RecentOrdersSearch, OldOrdersSearch, SpecialOrdersSearch. Все записи заказов имеют одинаковую структуру, они находятся в одной таблице заказов.Использовать текущее имя объекта в Access SQL

Дело в том, что всякий раз, когда я хочу выполнить действие по результату запроса, мне нужно создать код в тройной для последнего, старого и специального, потому что ссылка для источника данных изменяется: есть запрос с использованием [Формы]! [RecentOrdersResults]! [Client], другой использует [Forms]! [OldOrdersResults]! [Client] и т. Д.

Это сделает мою базу данных более чистой и сохранит мне много времени, если бы был какой-то способ неявно ссылаться к запущенной форме вместо того, чтобы называть ее явно, что-то вроде [Current]! [Client], поэтому мне нужен один запрос вместо трех.

Надеюсь, я был достаточно ясен в своем описании, извините, мой напряженный английский.

Заранее спасибо

ответ

0

При выполнении VBA кода в форме доступа, «Me» относится к форме, которая в настоящее время находится в фокусе, и код которого в настоящее время работает.

+0

Я знаю, что мой вопрос: будет ли в SQL эквивалент? – BlackDog

+0

Запросы доступа могут принимать параметры. Вы можете указать значение для параметра запроса в своем коде при запуске запроса. Это то, что вы хотите сделать? – Marty

1

Вы можете написать функцию, которая возвращает содержимое элемента управления [Client] в ActiveForm. Что-то вроде (быстро написано и не проверено):

Function GetClient() 
    GetClient = Screen.ActiveForm.Client.Value 
end Function 

и использовать это в своих запросах в качестве критерия. =GetClient()

Смежные вопросы