Примерно так:
Private Sub cboCopyNo_AfterUpdate()
If Nz(Me.cboCopyNo, "") <> "" Then
Me.txtTitle = DLookup("Title", "MovieMaster", "MovieID = " & Me.cboCopyNo)
End If
End Sub
Private Sub cboDaysRented_AfterUpdate()
If Nz(Me.cboDaysRented, 0) > 0 Then
Dim strType as String
strType = DLookup("[Type]", "MovieMaster", "MovieID = " & Me.cboCopyNo)
If Me.cboDaysRented = 1 Then
Me.txtPrice = DLookup("Price1Day", "Price", "[Type] = '" & strType & "'")
Else
Me.txtPrice = DLookup("Price3Day", "Price", "[Type] = '" & strType & "'")
End If
End If
End Sub
Пара заметок. Некоторые из ваших имен полей являются зарезервированными словами в определенных базах данных, таких как «Тип». Я настоятельно рекомендую вам использовать имена полей, которые не являются зарезервированными словами в Access или SQL-сервере.
DLookups не обязательно является самым быстрым способом поиска данных, но, вероятно, будет достаточно быстрым для того, что вы пытаетесь сделать здесь. Иногда я создаю свой собственный набор записей DAO и ищу нужные значения, а не использую DLookup. В основном это похоже на написание собственной функции DLookup.
DLookup использует язык SQL, поэтому ваш синтаксис в третьем аргументе, предложении WHERE, должен соответствовать SQL. Если поле в вашем предложении WHERE - текст / строка, вам нужно использовать одинарные кавычки по обе стороны от значения (как показано выше вокруг переменной strType). Если это числовое поле, вам не нужны кавычки. Если это дата, вам понадобятся хеш-знаки (#).