У меня есть форма, в которой я указываю номер моей части и часть rev. Я пытаюсь написать VBA, поэтому, если я нажму кнопку в форме, он будет искать запрос, который содержит всю историю всех частей, для номера детали, а также для совпадения деталей. Как только он найдет соответствующий номер детали и часть rev, он автоматически заполняет некоторую информацию в форме для меня.Использование Dlookup с несколькими критериями в форме
Прямо сейчас у меня есть данные, возвращающие данные для соответствующего номера детали, но он дает первые данные, независимо от части rev, т. Е. Возвращает значения, соответствующие другому номеру детали, но другому rev.
Sub FindPartNumber_Click()
DoCmd.OpenQuery "SavedQuotesQuery" 'runs query to find any matching part numbers
'confirms if part previously exists
If IsNull(DLookup("PartNumber", "SavedQuotesQuery", "'[PartNumber]=" & Me.PartNumber _
& " AND [PartRev]=" & Me.PartRev & "'")) Then
MsgBox "Part does not previously exist. Please manually enter its characteristics", _
vbOK 'and alerts user
DoCmd.Close 'close query
Exit Sub
End If
[PartName] = DLookup("PartName", "SavedQuotesQuery", "PartNumber='" & Me.PartNumber _
& "'")
[Length] = DLookup("Length", "SavedQuotesQuery", "PartNumber='" & Me.PartNumber & _
" And PartRev = " & Me.PartRev & "'")
DoCmd.Close 'close query
End Sub
Я просто борюсь с синтаксисом двух критериев соответствия или здесь что-то еще происходит?
Это идеальное исправление. Большое вам спасибо, но у меня есть один следующий вопрос: если бы было два экземпляра совпадающего номера детали и rev, но они имели разную длину, к которой можно было бы вернуться? – user3216418
Невозможно узнать, поскольку вы не можете указать порядок сортировки с помощью 'DLookup'. Если это вызывает беспокойство, один из подходов заключается в замене DLookup Аллена Брауна: [Extended DLookup()] (http://allenbrowne.com/ser-42.html). Его функция позволяет указать пользовательский порядок сортировки, чтобы справиться с ситуацией, которую вы описываете. – mwolfe02