私のWebアプリケーションでは、、、およびを定義しRegexましMatchたstr。したがって、は他の文字列をとRegex比較するために使用され、で見つかった一致を識別するために使用されます。私のコードでは、と比較するために3つの文字列が定義されています。データベースへの接続も定義されています。次のコードは定義を示しています。strMatchtextboxesmatchesstr
Dim r As Regex = New Regex(str2, RegexOptions.IgnoreCase)
Dim m1 As Match = r.Match(txt1.Text.ToString)
Dim m2 As Match = r.Match(txt2.Text.ToString)
Dim m3 As Match = r.Match(txt3.Text.ToString)
Dim myconn As New SqlConnection(ConnString)
私が問題に直面している部分は、私には多くのif elseステートメントがあり、次のようにそれらを適切に制御する方法を決定できないことです。
If (m1.Success) AND (m2.Success) AND (m3.Success) Then
Try
myconn.Open()
Dim cmd = New SqlCommand("Update Std SET Title = @param ", myconn)
cmd.Parameters.Add("@param", Data.SqlDbType.Bit).Value = bit_True
cmd.ExecuteNonQuery()
cmd.Dispose()
myconn.Close()
Catch ex As Exception
Response.Write(ex)
End Try
ElseIf (m2.Success) Then
Try
myconn.Open()
Dim cmd = New SqlCommand("Update Teacher SET In_name = @param ", myconn)
cmd.Parameters.Add("@param", Data.SqlDbType.Bit).Value = bit_True
cmd.ExecuteNonQuery()
cmd.Dispose()
myconn.Close()
Catch ex As Exception
Response.Write(ex)
End Try
ElseIf (m3.Success) Then
Try
myconn.Open()
Dim cmd = New SqlCommand("Update Std SET std_name = @param ", myconn)
cmd.Parameters.Add("@param", Data.SqlDbType.Bit).Value = bit_True
cmd.ExecuteNonQuery()
cmd.Dispose()
myconn.Close()
Catch ex As Exception
Response.Write(ex)
End Try
End If
私がコードに期待していることは次のとおりです。
最初の条件をチェックしてから最初のブロックを実行する
m1.successか、すべてのブロックを無視して次の条件(m2)に移動する場合は、trueTryFalseTry2番目の条件をチェックしてから2番目のブロックを実行する
m2.success場合、またはすべてのブロックを無視して次の条件(m3)に移動する場合は、trueTryFalseTry同じことが言えます
m3.Success
したがって、これは、最初のブロックが最初のTryブロックに関連しておりif statement (m1.Success)、条件(m1)が真の場合にのみ実行する必要があることを意味します。m2とm3についても同じことが言えます。このようにして、ステートメントを動的に制御できます。それで
m1=最初のTryブロックを実行します。
m2=2番目Tryのブロックを実行します。
m3=3番目Tryのブロックを実行します。
戻る条件は、そのブロックFalseとともに無視されます。Try
これらの条件を動的に制御する方法についての提案や考えはありますか?