我正在尝试创建一个从VBA函数添加新计算字段的查询
我有一个名为QLIK
要计算新字段,我需要两个名为SOCIETA
和UNBUNDLING
的现有字段,这些字段包含在表QLIK
中。
它被称为WBS
的新字段,我在VBA例程中使用SWITCH Function
(但我想使用一些IIF嵌套将是相同的),因为有太多的参数来创建直接在查询中使用代码buldier的字段
然后我从SQL语句中调用它,如:
SELECT fieldA, fieldB,…, GetWBS() AS WBS_C
FROM QLIK;
目前我有以下(简化)代码:
Public Function GetWBS() As String
Dim WBS As String
Dim cdb As DAO.Database
Dim Q As Recordset
Dim SOCIETA As Field, UNBUNDLING As Field
Set cdb = CurrentDb
Set Q = cdb.OpenRecordset("QLIK")
Set SOCIETA = Q.Fields("SOCIETA")
Set UNBUNDLING = Q.Fields("UNBUNDLING")
While Not Q.EOF
GetWBS = Switch( _
[SOCIETA] = "Company 1" And ([UNBUNDLING] = "U1"), WBS = "AAA", _
[SOCIETA] = "Company 1" And ([UNBUNDLING] <> "U1"), WBS = "BBB", _
[SOCIETA] = " Company 2", WBS = "CCC", _
[SOCIETA] = " Company 3", WBS = "DDD")
Q.MoveNext
Wend
Q.Close
End Function
但是我得到了“运行时错误94无效使用null”。我尝试将GetWBS() Function
和变量WBS
指定为变量,但我在新列中只得到零。
我的代码或其他方法有什么问题吗?
由于
答案 0 :(得分:0)
使用Nz函数处理字段中的空值 - 这允许您指定当字段值为空时VBA代码可以处理的值。所以你的代码就像是;
Switch((Nz(SOCIETA.Value, "") = "Company 1") And (Nz(UNBUNDLING.Value, "") = "U1") ....
这意味着当字段值为null时,Nz函数将返回&#34;&#34;。