Как проверить, является ли выходной столбец компонента скрипта нулевым?

Я пытаюсь проверить, является ли столбец вывода моего компонента скрипта NULL. Я пытался использовать Row.Column_IsNull, но когда я пытаюсь сделать следующее:

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

Я получаю сообщение об ошибке "Свойство Row.Column_IsNull is WriteOnly".

1 ответ

В чем проблема?

Ключевой ошибкой выше было is WriteOnly. Когда вы ссылаетесь на столбцы в компонентах Script как Transformation, вы можете указать, являются ли они ReadOnly, ReadWrite.

Когда вы являетесь Источником, у вас нет этой опции. Он WriteOnly (логически), и они даже не дают вам вариант вышеупомянутого диалога. Итак, когда вы находитесь в своем источнике и пытаетесь получить доступ к свойствам только для записи, как демонстрирует следующий код, он ломается.

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 ******** был достаточно любезен, чтобы указать, это был 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

licensed under cc by-sa 3.0 with attribution.