记录集中的项目 rstImportData("Flat Size") is = Null
有了这个,给出以下声明:
IIF(IsNull(rstImportData("Flat Size")), Null, cstr(rstImportData("Flat Size")))
Result: Throws error 94: Invalid use of Null
如果我通过在错误比较时删除类型转换来更改语句:
IIF(IsNull(rstImportData("Flat Size")), Null, 0)
Result: Null
它返回 Null,因为它应该是第一次。如果传入的值应该为 null,即使它通过了 IIF 测试,我似乎也无法在 IIF 中进行类型转换,它仍会尝试在真假答案中对其进行评估。我像这样使用 IIF 的唯一原因是因为我有 25 行比较来比较 Import 中的数据与数据库中的匹配记录,以查看是否需要附加之前的历史记录。
有什么想法吗?导入数据的方式将有空日期,并且电子表格导入为字符串格式,我必须将任一侧转换为另一侧以正确比较值,但如果任一侧为空,则会发生此异常:(
编辑 我为什么使用 IIF 的示例(并考虑使用通用函数)
If master("one") <> import("one") Or _
master("two") <> import("two") Or _
master("date") <> import("date") Or _ //import("date") comes from a spreadsheet, it comes in as string, CAN be a null value
master("qty") <> import("qty") Or _ //import("qty") comes from spreadsheet, comes in as a string can CAN be null
master("etc") <> import("etc") Then
....stuff....
End If
此代码扩展为大约 20 列以在数据库中进行比较。我更愿意检查作为声明的一部分。我可以想到一堆解决方案,但它们涉及添加更多代码。如果是这样的话,我也不是那么容易屈服的人。
我看到的选项是
- 在比较和使用这些新变量而不是记录集之前创建临时变量来完成工作
- 创建一个对象以将记录传递到预格式化和使用,尽管额外的工作将为每种导入类型提供此功能,因为不同的文件具有相似的字段
我来这里是为了想法,我对任何有趣的作品持开放态度,因为我决定如何去做我正在寻找最可重用的方法。