Ich habe ein Problem beim Ausführen einer Merge-Abfrage von zu aktualisieren oder Werte aus einer DataGridView
Tabelle in eine SQL-Server-Datenbanktabelle. Hier ist mein Code unten, es gibt mir keine Fehler oder Unterbrechungen, aber ich habe kürzlich festgestellt, dass es vollständig Zeilen in meiner Datenbanktabelle dbo.schedule erstellt hat, die alle NULL Werte enthalten, auch diese Schlüsselposition könnte jemand bitte hilf mir? Ich bin nicht sehr vertraut mit Merge-Abfragen in SQL so wenden Sie sich bitte Probleme mit meiner Syntax hinweisen:Frage von Datagridview zu Datenbank nicht zusammenführen sql, vb.net
Dim query As String = String.Empty
query &= "DECLARE @TaskID nvarchar(8), @Task nvarchar(50), @Start_date datetime, @Due_date datetime, @Complete bit, @Task_Manager nvarchar(8), @JRID nvarchar(10), @Entered_By char(50), @Time_Entered datetime;"
query &= "MERGE INTO schedule USING (VALUES (@TaskID, @Task, @start_date, @Due_Date, @Complete, @Task_Manager, @JRID, @Entered_By, @Time_Entered)) AS t(TaskID, Task, start_date, Due_Date, Complete, Task_Manager, JRID, Entered_By, Time_Entered) "
query &= "ON schedule.TaskID = @TaskID WHEN MATCHED THEN"
query &= " UPDATE SET schedule.TaskID = t.TaskID, schedule.Task=t.Task, schedule.start_date=t.start_date, schedule.due_date=t.due_date, schedule.complete=t.complete, schedule.task_manager=t.task_manager, "
query &= "schedule.JRID=t.JRID, schedule.Entered_by=t.Entered_by, schedule.Time_Entered=t.Time_Entered"
query &= " WHEN NOT MATCHED THEN INSERT (TaskID, Task, start_date, Due_Date, Complete, Task_Manager, JRID, Entered_By, Time_Entered)"
query &= " VALUES (@TaskID, @Task, @start_date, @Due_Date, @Complete, @Task_Manager, @JRID, @Entered_By, @Time_Entered);"
Using conn As New SqlConnection(dbLocations(0, 1))
Using comm As New SqlCommand()
With comm
For Each row As DataGridViewRow In MainSchedule.DataGridView1.Rows
If Not (row.Cells(0).Value = Nothing) Then
.Parameters.Clear()
.Connection = conn
.CommandType = CommandType.Text
.CommandText = query
insertcommand.Parameters.AddWithValue("@TaskID", TNn)
insertcommand.Parameters.AddWithValue("@Complete", "False")
insertcommand.Parameters.AddWithValue("@Task", row.Cells(0).Value)
insertcommand.Parameters.AddWithValue("@Start_date", row.Cells(1).Value)
insertcommand.Parameters.AddWithValue("@Due_Date", row.Cells(2).Value)
insertcommand.Parameters.AddWithValue("@JRID", txtJRID.Text)
insertcommand.Parameters.AddWithValue("@Task_Manager", row.Cells(3).Value)
insertcommand.Parameters.AddWithValue("@Entered_By", GetUserName())
insertcommand.Parameters.AddWithValue("@Time_Entered", Now)
NextTask()
End If
Next
End With
conn.Open()
comm.ExecuteNonQuery()
End Using
End Using