!(((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
提前致谢
答案 0 :(得分: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中修复它比在条件转换的内容中容易得多,仅仅基于可读性
答案 1 :(得分: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)))))
}
让我知道它是否有效
Ashutosh Arya