Ich habe eine DatagridView
mit einer Checkboxcolumn
Mein Ziel ist es zu überprüfen, ob die Checked Row bereits in der Datenbank vorhanden ist, aber mein Code gibt mir nicht die gewünschte Ausgabe. Was ist los mit dir?Überprüfen Sie, ob die in DataGridview eingecheckte Zeile in der Datenbank existiert
Hier ist es
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conn As MySqlConnection = New MySqlConnection("datasource=localhost;database=operations;userid=root;password=admin1950;Convert Zero Datetime=True")
conn.Open()
Dim comm As MySqlCommand = New MySqlCommand()
comm.Connection = conn
Dim name As String
For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1 Step 1
If Me.DataGridView1.Rows(i).Cells(0).Value = True Then
name = Me.DataGridView1.Rows(i).Cells(1).Value
comm.CommandText = "select ElecAssigned,ScheduleDate from assignments where ElecAssigned = '" & name & "' and ScheduleDate = @ScheduleDate"
comm.Parameters.AddWithValue("@ScheduleDate", DateTimePicker1.Value)
comm.ExecuteNonQuery()
Dim reader As MySqlDataReader
reader = comm.ExecuteReader
If reader.HasRows Then
MsgBox("The persons that you Selected is also Scheduled Today.")
End If
End If
Next
End Sub
Hier ist das Szenario.
speichere ich ein Datum in der Tabelle assignments
und es sieht so aus.
und hier ist das Szenario in dem Programm
ich eine Zeile in der Datagridview
und wählen Sie in DateTimePicker
ein Datum überprüft, die gleich in der meinem Tisch ist muss es sein Nachricht, die besagt: The selected Person is also Scheduled Today
Hier ist der Code
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connection As New MySqlConnection("datasource=localhost;database=operations;userid=root;password=admin1950;Convert Zero Datetime=True")
Dim command As New MySqlCommand("SELECT COUNT(*) FROM Assignments WHERE ElecAssigned = @ElecAssigned AND ScheduleDate = @ScheduleDate", connection)
Dim parameter = command.Parameters.Add("@ElecAssigned", MySqlDbType.VarChar, 50)
command.Parameters.AddWithValue("@ScheduleDate", DateTimePicker1.Value)
connection.Open()
For Each row As DataGridViewRow In Me.DataGridView1.Rows
If CBool(row.Cells(0).Value) Then
parameter.Value = CStr(row.Cells(1).Value)
If CInt(command.ExecuteScalar()) > 0 Then
'Match found.
Else
MsgBox("The Personnel(s) you Selected is also Scheduled Today")
'No match found.
'Save It
End If
End If
Next
End Sub
Unabhängig davon, wie viele ich wähle das Programm prüft, ob die ausgewählten Personen werden ebenfalls geprüft.
Warum haben Sie einen Parameter für scheduledate, aber nicht nennen? –
ich, dass der reale Wert von 'datetimepicker' zu überprüfen, denn wenn ich es in dem Befehl fügen Sie eine Fehlermeldung, falsches Datum Format hat –
Das Update gut aussehen. In diesem Beispiel würde die IF-Bedingung dreimal (einmal für jede Zeile) ausgeführt werden und Ihr Datum und der Techniker an die Abfrage übergeben. Wenn die Abfrage> 0 zurückgibt, wurde diesem Techniker bereits dieses Datum zugewiesen. Führt der IF> 0 beim Debugging oder springt er zum else? Ist ein Datum oder ein Datum geplant? –