我正在尝试检查我的脚本组件的输出列是否为 NULL。我尝试使用 Row.Column_IsNull,但是当我尝试执行以下操作时:
If Row.Column_IsNull = True Then
// do something
End If
我收到错误“Property Row.Column_IsNull is WriteOnly”。
我正在尝试检查我的脚本组件的输出列是否为 NULL。我尝试使用 Row.Column_IsNull,但是当我尝试执行以下操作时:
If Row.Column_IsNull = True Then
// do something
End If
我收到错误“Property Row.Column_IsNull is WriteOnly”。
上面的关键错误是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