Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何摆脱空或“空”&引用;在VBA Ms access中_Json_Vba_Ms Access - Fatal编程技术网

Json 如何摆脱空或“空”&引用;在VBA Ms access中

Json 如何摆脱空或“空”&引用;在VBA Ms access中,json,vba,ms-access,Json,Vba,Ms Access,查看如何帮助消除空值或“”如果下面的代码在记录源中找不到值,我尝试了IsEmpty,但它在VBA中甚至不被接受: Tax.Add Nz(DLookup("TaxClassB", "QryJson", "InvoiceID =" & Me.InvoiceID & " AND ItemesID =" & CStr(i)), "") 最后,这解决了我的问题: Tax.Add Nz(DLookup("TaxClassB", "QryJson", "InvoiceID =" &a

查看如何帮助消除空值或“”如果下面的代码在记录源中找不到值,我尝试了IsEmpty,但它在VBA中甚至不被接受:

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

最后,这解决了我的问题:

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)

或者,您可以按照以下子例程执行某些操作:

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
或者为其中一个或两个参数传递空字符串,这将导致为其进行的所有匹配添加税类:

TryAddTaxClasses("", "")
对于快速、粗略和现成的代码之外的任何东西,我都会郑重建议避免使用DLookup。它带来的麻烦比它的价值还多。例如,其缺点可在此处阅读>


相反,我倾向于使用记录集方法,或者使用我自己的“ELookup”域函数,类似于allenbrowne页面上的函数。

ItemesID
类似发票ID的字符串还是数字?你能详细说明一下代码吗?请注意,emesid是像1,2,3,4这样的序列号,etcIf ItemesID是一个数字类型的字段,为什么要使用CStr()函数?如果DLookup返回Null,您希望保存什么值?ItemsId是不可协商的,它必须在那里根据税务要求显示产品线编号,而不使用CStr(),那么json将只显示一个产品线,而不是一行一行地显示。例如,如果有100行,json字符串将按顺序显示所有行,但如果忽略CStr函数,json永远不会显示所有行产品,而只能显示一个
TryAddTaxClasses("", "")