У меня есть следующие строки кода в 2 разных функциях VBA в модуле, они обе имеют одну и ту же цель - открыть форму для определенной записи;
stLinkCriteria = "[ID]=" & Reports![Rpt_Manufacture].[ID]
DoCmd.OpenForm stDocName, , , stLinkCriteria
и
stLinkCriteria = "[ID]=" & Forms![frmManufactureList]![frm_Products].[ID]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Как я могу изменить это, чтобы у меня была только одна функция, которую я могу вызывать из отчетов или форм, и она откроет форму для определенной записи. Я попробовал меня! версия в отчетах, но я получаю ключевое слово «Неправильное использование мной», которое, как мне кажется, связано с тем, что я не могу использовать его из модуля.
ОБНОВЛЕНИЕ № 1
Основываясь на ответе Томаса Дж, приведенного ниже, я использовал этот код;
Option Compare Database
Public Function CmdOpenProductDetails(ByRef theObject As Object)
On Error GoTo Err_CmdOpenProductDetails
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "FrmProductDetails"
stLinkCriteria = "[ProductID]=" & theObject![ProductID]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_CmdOpenProductDetails:
Exit Function
Err_CmdOpenProductDetails:
MsgBox Err.Description
Resume Exit_CmdOpenProductDetails
End Function
А из формы и отчета для названий продуктов у меня есть событие onClick, которое гласит:
=CmdOpenProductDetails()
Однако, если я нажимаю на название продукта в форме, я получаю сообщение об ошибке;
Экспресс при клике, который вы ввели в качестве настройки свойства события
выдал следующую ошибку. Введенное вами выражение имеет
Функция содержит неверное количество аргументов. (Выражение может
не приводит к имени макроса, UDF или Event Proc) (там может быть
была ошибка при оценке функции).
Если я щелкаю из отчета, я получаю сообщение об ошибке;
MS Access не может найти объект 'CmdOpenProductDetails (). Удостовериться
Вы сохранили его и правильно набрали.