以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 组合条件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=111440)

--  作者:zcgmxf
--  发布时间:2017/12/21 21:42:00
--  [求助] 组合条件
老师,下面的字符串如果包括三项还好写代码,如果有五项,排列组合120个,不知如何理顺这个逻辑关系,该如何简化代码?谢谢!
    Dim str As String = r("体检项目")
    If str.Contains("内科") And str.Contains("外科") = False And str.Contains("神经系统") = False Then
        If r("内科_确认检查") = False Then
            lb2.Text = "内外科未检"
            lb2.ForeColor = Color.red
        Else
            lb2.Text = "内外科已检"
            lb2.ForeColor = Color.blue
        End If
    ElseIf str.Contains("内科") And str.Contains("外科") And str.Contains("神经系统") = False Then
        If r("外科_确认检查") = False Or r("内科_确认检查") = False Then
            lb2.Text = "内外科未检"
            lb2.ForeColor = Color.red
        Else
            lb2.Text = "内外科已检"
            lb2.ForeColor = Color.blue
        End If
    ElseIf str.Contains("内科") And str.Contains("外科") And str.Contains("神经系统") Then
        If r("神经系统_确认检查") = False Or r("外科_确认检查") = False Or r("内科_确认检查") = False Then
            lb2.Text = "内外科未检"
            lb2.ForeColor = Color.red
        Else
            lb2.Text = "内外科已检"
            lb2.ForeColor = Color.blue
        End If
    ElseIf str.Contains("内科") = False And str.Contains("外科") And str.Contains("神经系统") Then
        If r("外科_确认检查") = False Or r("内科_确认检查") = False Then
            lb2.Text = "内外科未检"
            lb2.ForeColor = Color.red
        Else
            lb2.Text = "内外科已检"
            lb2.ForeColor = Color.blue
        End If
    ElseIf str.Contains("内科") = False And str.Contains("外科") = False And str.Contains("神经系统") Then
        If r("神经系统_确认检查") = False Then
            lb2.Text = "内外科未检"
            lb2.ForeColor = Color.red
        Else
            lb2.Text = "内外科已检"
            lb2.ForeColor = Color.blue
        End If
    ElseIf str.Contains("内科") = False And str.Contains("外科") And str.Contains("神经系统") = False Then
        If r("外科_确认检查") = False Then
            lb2.Text = "内外科未检"
            lb2.ForeColor = Color.red
        Else
            lb2.Text = "内外科已检"
            lb2.ForeColor = Color.blue
        End If
    End If


 str.Contains("鼻及咽部")  str.Contains("眼科")  str.Contains("口腔科")  str.Contains("耳科")  str.Contains("耳科") 
 r("鼻咽部_确认检查") = False   r("耳部_确认检查") = False    r("口腔_确认检查") = False    r("眼部_确认检查") = False   r("神经系统_确认检查") = False  
            lb6.Text = "五官未检"
            lb6.ForeColor = Color.red
        Else
            lb6.Text = "五官已检"
            lb6.ForeColor = Color.blue
        End If


--  作者:有点甜
--  发布时间:2017/12/21 23:37:00
--  

写成数组,写成循环。

 

Dim ary() As String = {"内科", "外科", "神经系统"}
Dim str As String = "内科神经系统"
Dim r As Row
Dim flag As Boolean = True
For Each s As String In ary
    If str.Contains(s) Then
        If r(s & "_确认检查") = False Then
            msgbox(s & "没检查")
            flag = False
            Exit For
        End If
    End If
Next
if flag = true then
    msgbox("全部检查了")
end if