Рассмотрим функцию DLookUp вместо извлечения набора записей DAO, которая не доступна напрямую для формирования элементов управления, таких как текстовые поля. Затем непосредственно присвойте значение текстовому полю в VBA и обязательно удалите все ControlSource
, так как текстовое поле должно быть пустым для назначения VBA.
Доступный в Access SQL и VBA, аргумент критерия DLookUp может принимать любое совместимое условие SQL WHERE
. Следовательно, вы можете повторно использовать части вашего SELECT
заявления. Кроме того, функция возвращает первый экземпляр поиска, если должно быть возвращено несколько значений.
Public Function payrollVar(dateVar As Date, roleidVar As String, typeVar As String)
Dim val As Variant
If typeVar = "Actual" Or typeVar = "Forecast" Then
val = DLookUp("[*Quantity]", "[Master Data]", _
"[*Category] = 'Payroll' AND " _
& "[*Date] = #" & dateVar & "#) AND " _
& "[*Role ID] = '" & roleidVar & "' AND " _
& "[*Type] = '" & typeVar & "'")
ElseIf typeVar = "ODE" Then
val = DLookUp("[*Quantity]", "[Master Data]", _
"[*Category] = 'Resource_Detail_Cost_Increase_Projections_Table' AND " _
& "[*Date] = #" & dateVar & "#) AND " _
& "[*Role ID] = '" & roleidVar & "' AND " _
& "[*Type] = '" & typeVar & "'")
End If
' ASSIGN TO UNBOUND TEXTBOX
Me.[myTextbox] = val
End Function
Затем для триггера события, будь то OnClick
, OnOpen
, AfterUpdate
и т. Д., Вызовите невозвращенный метод:
Call payrollVar(param1, param2, param3)