gpt4 book ai didi

vb6 - "Invalid use of Null"将 Str() 与 Null Recordset 字段一起使用时,但 Str(Null) 工作正常

转载 作者:行者123 更新时间:2023-12-04 13:29:42 25 4
gpt4 key购买 nike

我正在用头撞墙。我正在查看一些用 VB6 编写的旧数据库报告代码并遇到了这一行(代码正在将数据从“源”数据库移动到报告数据库中):

rsTarget!VehYear = Trim(Str(rsSource!VehYear))

rsSource!VehYearNull ,上面的行会生成“无效使用 Null”运行时错误。如果我打破上述行并在“立即” Pane 中键入以下内容:
?rsSource!VehYear

它输出 Null .很好,有道理。接下来,我尝试重现错误:
?Str(rsSource!VehYear)

我收到“无效使用 Null”错误。

但是,如果我在“立即”窗口中键入以下内容:
?Str(Null)

我没有收到错误。它只是输出 Null .

如果我用 Trim() 重复相同的实验而不是 Str() ,一切正常。 ?Trim(rsSource!VehYear)返回 Null ,正如 ?Trim(Null) .没有运行时错误。

所以,我的问题是,如何才能 Str(rsSource!VehYear)Str(Null) 时,可能会抛出“无效使用 Null”错误没有,当我 知道 那个 rsSource!VehYear等于 Null ?

更新:如果我在“立即”窗口中键入以下内容,它会按预期工作(不会发生错误):
?Str(rsSource!VehYear.Value)

这输出 Null .现在,我知道 rsSource!VehYear实际上是一个 ADODB.Field实例,但是 Value是它的默认属性,所以 Str应该在 Value 上运行属性(即 Null )。甚至错误消息(“无效使用 Null”)也表明 Str正在收到 Null参数,但是怎么处理 Null在一种情况下而不是在另一种情况下不同?

我唯一的猜测是 Str() 的内部实现以某种方式未能获得默认属性,并且“无效使用 Null”错误的发生原因不同(参数以外的其他原因导致“无效使用 Null”,可能是在尝试检索默认属性时来自 Field 对象)。

有没有人对这里实际发生的事情有更详细的技术解释?

简而言之:
?Str(rsSource!VehYear)

rsSource!VehYear 时抛出“无效使用 Null”错误是 Null , 但
?Str(rsSource!VehYear.Value)

返回 Null .

然而,两者 Trim(rsSource!VehYear)Trim(rsSource!VehYear.Value)返回 Null .

最佳答案

如果您需要字符串以外的值,请尝试改用 IsNull:

rsTarget!VehYear = IIf(IsNull(rsSource!VehYear), 0, rsSource!VehYear)

' 注意 0 是默认值

关于vb6 - "Invalid use of Null"将 Str() 与 Null Recordset 字段一起使用时,但 Str(Null) 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com