【问题标题】:Adding a new calculated field in a Query through a VBA fuction通过 VBA 函数在查询中添加新的计算字段
【发布时间】:2015-10-20 15:45:24
【问题描述】:

我正在尝试创建一个查询,从 VBA 函数添加一个新的计算字段

我有一个名为QLIK的现有表

要计算新字段,我需要两个名为 SOCIETAUNBUNDLING 的现有字段,它们包含在表 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 指定为 Variants,但我在新列中只得到零。

对我的代码有什么问题或其他方法有什么想法吗?

谢谢

【问题讨论】:

    标签: mysql ms-access vba ms-access-2013


    【解决方案1】:

    使用 Nz 函数处理字段中的空值 - 这允许您指定 VBA 代码在字段值为空时可以处理的值。所以你的代码会是这样的;

    Switch((Nz(SOCIETA.Value, "") = "Company 1") And (Nz(UNBUNDLING.Value, "") = "U1") ....
    

    这意味着当字段值为空时,Nz函数将返回“”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2016-11-01
      • 2011-02-01
      • 1970-01-01
      • 2019-01-30
      • 2020-06-11
      相关资源
      最近更新 更多