我是VB的新手,我的任务是比较两个语句。请找到以下代码:
Dim obj As Object = TryCast(mBindingSource.Current,DataRowView).Item("Emp_Status")
Dim ProcessEmp As eProcessEmp = IIf((mEmployee.IsTrue And (obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)), eProcessEmp.SAVE, eProcessEmp.SUBMIT)
上面代码mEmployee.IsFalse
我应该这样:
Dim ProcessEmp As eProcessEmp = IIf((mEmployee.IsFalse, eProcessEmp.Submit, eProcessEmp.Save)
如何将这两个语句合并为单个验证。有人可以帮忙吗?
答案 0 :(得分:1)
目前你的逻辑似乎有点错误。
您首先IIF
有这样的逻辑:
IIf(
(mEmployee.IsTrue And (obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)),
eProcessEmp.SAVE,
eProcessEmp.SUBMIT
)
如果我们将mEmployee.IsFalse
翻转为mEmployee.IsTrue
,那么您的第二个就有这样的逻辑:
IIf(
mEmployee.IsTrue,
eProcessEmp.Save,
eProcessEmp.Submit
)
这基本上意味着您在逻辑的第一部分忽略了(obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)
条件。
但是,如果你想变得迂腐,那么你的组合逻辑是:
Dim ProcessEmp As eProcessEmp = IIf( _
(Not mEmployee.IsFalse) Or _
(mEmployee.IsTrue And _
(obj = eEmp_Status.Active Or obj = eEmp_Status.InActive)), _
eProcessEmp.SAVE, _
eProcessEmp.SUBMIT)
但是,再一次,整个条件减少到mEmployee.IsTrue
- 所以你的逻辑出了问题。