Доступ к VBA: измените запрос, на который ссылается функция, в зависимости от контекста. - PullRequest
1 голос
/ 21 мая 2010

У меня есть пользовательская функция в Access2007, которая зависит от извлечения данных из конкретного запроса. Он открывает Outlook, создает новое электронное письмо и заполняет поля конкретными адресами и данными, взятыми из запроса ("DecisionEmail"). Теперь я хочу сделать другой запрос ("RequestEmail") и заполнить его этими данными. Так что все, что мне нужно сделать, это изменить эту строку:

Set MailList = db.OpenRecordset("DecisionEmail")

и вот где я в тупике.

Это мой желаемый результат: Если пользователь на Form_Decision и нажмет кнопку "Send email", "DecisionEmail" будет подключен к функции, и эти данные появятся в электронном письме. Если пользователь нажмет кнопку Form_SendRequest и нажмет кнопку "Send email", вместо него будет "RequestEmail". Причина того, что это разные запросы, заключается в том, что они содержат очень разную информацию, которая размазывается по-разному. Тем не менее, поскольку в коде функции нужно изменить только одну маленькую вещь, я не думаю, что новая функция - это хорошая идея.

Моим последним средством было бы создать совершенно новую функцию и использовать поле «Условия» в интерфейсе макроса для выбора между ними, но я чувствую, что возможно более элегантное решение.

У меня есть смутное представление о том, чтобы задавать имена запросов в качестве переменных и использовать оператор If, но у меня просто нет умственного словаря для обдумывания этого.

1 Ответ

2 голосов
/ 22 мая 2010

Почему бы не сохранить макрос как код, тогда вы можете отредактировать его, чтобы получить, скажем,

Function CustomEmail(NameOfQuery As String)

    CurrentDB.Openrecordset(NameOfQuery)

End Function

Затем на каждой форме в нужном событии:

CustomEmail "DecisionEmail"
...