1

我正在尝试检查我的脚本组件的输出列是否为 NULL。我尝试使用 Row.Column_IsNull,但是当我尝试执行以下操作时:

If Row.Column_IsNull = True Then
// do something
End If

我收到错误“Property Row.Column_IsNull is WriteOnly”。

4

1 回答 1

1

问题是什么

上面的关键错误是is WriteOnly. 当您将脚本组件中的列引用为转换时,您可以指定它们是只读还是读写。

在此处输入图像描述

充当 Source 时,您没有该选项。它是 WriteOnly (逻辑上),他们甚至没有给你上面对话框的选项。因此,当您在 Source 中并尝试访问如下代码所示的只写属性时,它会中断。

Public Overrides Sub CreateNewOutputRows()
    Output0Buffer.AddRow()

    ' this is logically wrong
    If Output0Buffer.Column_IsNull Then

    End If
End Sub

解决方法是,在进行分配(或创建单独的布尔标志)之前,您需要检查分配给 OutputBuffer0.Column 的任何内容,以跟踪当前值是否已填充。

不是什么问题

把这个放在这里,因为我已经跑进了这个兔子洞

由于 _IsNull 是布尔值,您可以跳过显式测试并简单地使用

If Row.Column_IsNull Then

最初,我认为这是经典的类似 C 语言的赋值 (=) 与相等 (==) 问题,但正如 @John Saunders 所指出的那样,这是 VB。

也就是说,提供的代码应该可以工作(它对我有用)。

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Dim x As String
    If Row.Src_IsNull = True Then
        x = "" ' do nothing
    End If
End Sub
于 2013-11-05T19:52:25.317 回答