Или вы можете сделать что-то вроде следующей подпрограммы:
Private Sub TryAddTaxClasses(invoiceID As String, itemesID As String)
Dim criteria As String: criteria = "TaxClassB <> '' AND TaxClassB IS NOT NULL"
If invoiceID <> "" Then criteria = criteria & " AND InvoiceID=" & invoiceID
If itemesID <> "" Then criteria = criteria & " AND ItemesID=" & itemesID
Dim rst As DAO.Recordset: Set rst = CurrentDb.OpenRecordset("SELECT TaxClassB FROM QryJson WHERE " & criteria, dbOpenSnapshot)
rst.MoveFirst
Do While Not rst.EOF
Tax.Add rst!TaxClassB
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub
Вызовите это следующим образом для конкретной c / одной записи:
TryAddTaxClasses(Me.InvoiceID, CStr(i))
или пропускать пустые строки для одного или обоих аргументов, что приведет к добавлению налоговых классов для всех найденных совпадений:
TryAddTaxClasses("", "")
Для всего, кроме быстрого, грубого и готового кода, я бы серьезно рекомендуем избегать использования DLookup. Это вызывает больше проблем, чем стоит. Например, о его недостатках можно прочитать здесь> http://allenbrowne.com/ser-42.html
Вместо этого я склонен использовать методы набора записей или использовать собственные функции домена «ELookup», аналогичные тем, которые используются в этом allenbrowne. стр.