Как избавиться от Null или "" в доступе VBA Ms - PullRequest
0 голосов
/ 08 января 2020

Посмотрите, как вы можете помочь избавиться от нулевого значения или "", если приведенный ниже код не находит значение в источнике записи, я попробовал IsEmpty, он даже не принят в VBA:

Tax.Add Nz(DLookup("TaxClassB", "QryJson", "InvoiceID =" & Me.InvoiceID & " AND ItemesID =" & CStr(i)), "")

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Или вы можете сделать что-то вроде следующей подпрограммы:

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. стр.

0 голосов
/ 09 января 2020

Наконец, это решило мою проблему:

Tax.Add Nz(DLookup("TaxClassB", "QryJson", "InvoiceID =" & Me.InvoiceID & " AND ItemesID =" & CStr(i)), "")

Требуются следующие изменения:

Dim myVariant As Variant 
If (myVariant = Empty) Then 
End If

После вышеупомянутой декларации мой новый код будет выглядеть следующим образом:

Tax.Add Nz(DLookup("TaxClassB", "QryJson", "InvoiceID =" & Me.InvoiceID & " AND ItemesID =" & CStr(i)), myVariant)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...