-1
 !(((ISNULL(Phone))&&(ISNULL(WorkPhone))&&(ISNULL(OtherPhone)))&&(((ISNULL(Phone))||

((!ISNULL(Phone))&&(PhoneXPC==1)))&&(((ISNULL(WorkPhone))||((!ISNULL(WorkPhone))&&

(WorkPhoneXPC==1)))&&(((ISNULL(OtherPhone))||((!ISNULL(OtherPhone))&&(OtherPhoneXPC==1)))))

在这种情况下是否有任何缺陷可以帮助我们......我们有 6 列涉及这种情况,它包含三种类型的电话号码和XPC columns每个记录的相应电话号码的三位。

我们允许为电话号码列放置空值,并且其各自的值XPC column也将为空。

因此,如果这些 XPC 列中的任何一个包含 0,则应将该人放入一个文件中,如果这些 XPC 列中的任何一个不包含 0 但可以包含 null,则应将其放入另一个文件中。

我正在使用visualstudio 2005

提前致谢

4

2 回答 2

2

这个复合条件非常讨厌,让我想改用脚本组件:

建议数据流的屏幕截图

脚本组件(此处为 SCR_DetermineTarget)配置为TargetId向数据流添加列的同步转换。以下条件拆分逻辑变得简单地与TargetId您选择的任何值进行比较。我选择使用 1 表示所有 XPC 字段为零,使用 2 表示至少有一个 XPC 字段非零但所有电话号码均为空。

下面的代码(在 VB 中,因为您指定了 VS 2005)TargetId适当地设置:

Public Overrides Sub MyInput_ProcessInputRow(ByVal Row As MyInputBuffer)
    Dim targetId As Integer
    targetId = 0

    If Row.PhoneXPC = 0 Or Row.WorkPhoneXPC = 0 Or Row.OtherPhoneXPC = 0 Then
        targetId = 1
    ElseIf Row.Phone_IsNull Or Row.WorkPhone_IsNull Or Row.OtherPhone_IsNull Then
        targetId = 2
    End If

    Row.TargetId = targetId
End Sub

如果该逻辑不是您想要的,那么在 VB.NET 中修复它应该比在条件转换的内部更容易,仅基于可读性。

于 2013-08-27T01:37:30.357 回答
0

试试用这个!!

{

(((ISNULL(Phone)=="TRUE")&&(ISNULL(WorkPhone)=="TRUE")&&(ISNULL(OtherPhone)=="TRUE"))&&

(((ISNULL(Phone)=="TRUE")||((!ISNULL(Phone)=="TRUE")&&(PhoneXPC==1)))&&

(((ISNULL(WorkPhone)=="TRUE")||((!ISNULL(WorkPhone)=="TRUE")&&(WorkPhoneXPC==1)))&&

(((ISNULL(OtherPhone)=="TRUE")||((ISNULL(OtherPhone)=="TRUE")&&(OtherPhoneXPC==1)))))


 }

让我知道它是否有效

阿舒托什·艾莉亚

于 2013-08-26T12:16:44.153 回答