VB.net의 My If Else 문은 임의로 If 또는 ElseIf 조건 중 하나를 표시합니다.VB.net의 Else 문 결과가 임의 일 경우
DataGridView 확인란을 선택하고 LinkLabel을 클릭하면 시스템이 선택된 행을 가져 와서 "EditTime"열을 "ds"또는 "en"으로 업데이트합니다. "열에 이미있는 항목에 따라 달라집니다.
"EditTime "열의 데이터가"ds "로 설정되면 If Else 조건은"en "으로 변경해야하며 그 반대의 경우도 마찬가지입니다.
Dim en As OleDbCommand = New OleDbCommand("SELECT * FROM [Roster1]", myConnection)
Dim d As OleDbDataReader = en.ExecuteReader
Dim edt As String = ""
While d.Read
edt = d("EditTime").ToString
End While
Dim CheckedRows =
(
From Rows In AdminTabDisplay.Rows.Cast(Of DataGridViewRow)()
Where CBool(Rows.Cells("ck").Value) = True
).ToList
If CheckedRows.Count > 0 Then
Dim sb As New System.Text.StringBuilder
For Each row As DataGridViewRow In CheckedRows
sb.AppendLine(row.Cells("Employee ID").Value.ToString)
Next
If edt = "ds" Then
Dim st As String = sb.ToString
Dim value As Integer = CInt(st)
Dim cmd As OleDbCommand = New OleDbCommand("UPDATE [Roster1] SET [EditTime] = @pw WHERE [Employee ID] = @v", myConnection)
cmd.Parameters.AddWithValue("@pw", "en")
cmd.Parameters.AddWithValue("@v", value)
cmd.ExecuteNonQuery()
MsgBox("Edit enabled!")
ElseIf edt = "en" Then
Dim st As String = sb.ToString
Dim value As Integer = CInt(st)
Dim cmd As OleDbCommand = New OleDbCommand("UPDATE [Roster1] SET [EditTime] = @pw WHERE [Employee ID] = @v", myConnection)
cmd.Parameters.AddWithValue("@pw", "ds")
cmd.Parameters.AddWithValue("@v", value)
cmd.ExecuteNonQuery()
MsgBox("Edit disabled!")
End If
이것은 내 코드입니다. 그러나 출력은 조금 무작위로 보입니다.
은 I가 6 개 개의 행을 갖는다. 그러나 그것은 단지 더미 데이터를 사용하기 때문에 결국 증가 할 것입니다. 그래서 edt는 마지막 행만 가져 옵니까? –
물론 그렇습니다. 현재 Eployee ID의 edt 값이 아닌 항상 마지막 값을가집니다. 첫 번째 쿼리를 'Dim en As OleDbCommand = New OleDbCommand'("SELECT * FROM [Roster1] WHERE [Employee ID] = xx", myConnection)'로 변경하고 foreach 문으로 이동해야합니다. – Andrea
foreach 문에서 옮긴 후 While 루프를 제거해야합니까? foreach 문 외부에서 ** edt ** 변수를 어떻게 호출합니까? @Andrea –