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
これは私のコードです。しかし、出力は少しランダム化されているようです。
現在私はそれに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 –