Ich habe die folgende Subroutine in meinem Code zum Einfügen eines neuen Datensatzes in eine SQL Server-Datenbank. Nachdem der Code durchlaufen wurde, wird der gesamte Code durchlaufen, das Meldungsfeld wird angezeigt, aber die Zeile wird nicht tatsächlich in die Datenbank eingefügt. Ich weiß, dass es die richtige Verbindung verwendet, wie ich Datensätze auf dem verwandten Raster anzeigen kann, die ich manuell mit SQL Server eingefügt, und auch meine UPDATE
und DELETE
Abfragen funktionieren, verwenden die gleiche Verbindung, so etwas stimmt nicht mit meinem Code, aber ich kann nicht erarbeiten was ... Kann mir jemand helfen?INSERT-Abfrage wird ausgeführt, aber nicht eingefügt
Public Shared Function SaveNewIncident(ByVal clientName As String, dateStart As Date, dateEnd As Date, ByVal incidentProblem As String, ByVal timeStart As String, ByVal timeEnd As String,
ByVal incidentSolved As Boolean, ByVal incidentSolution As String, _con As OleDbConnection)
Dim tr As OleDbTransaction = Nothing
Try
tr = _Con.BeginTransaction()
Dim Dc As New OleDbCommand
Dc.Connection = _con
Dim ID As Integer
ID = "1"
Dc.CommandType = CommandType.Text
Dc.CommandText = "INSERT INTO dbo.tblIncidents VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"
Dc.Transaction = tr
Dc.Parameters.Add("@supportID", OleDbType.Integer).Value = ID
Dc.Parameters.Add("@clientName", OleDbType.VarChar).Value = clientName
Dc.Parameters.Add("@dateStart", OleDbType.Date).Value = dateStart
Dc.Parameters.Add("@dateEnd", OleDbType.Date).Value = dateEnd
Dc.Parameters.Add("@incidentProblem", OleDbType.LongVarChar).Value = incidentProblem
Dc.Parameters.Add("@timeStart", OleDbType.VarChar).Value = timeStart
Dc.Parameters.Add("@timeEnd", OleDbType.VarChar).Value = timeEnd
Dc.Parameters.Add("@incidentSolved", OleDbType.Boolean).Value = incidentSolved
Dc.Parameters.Add("@incidentSolution", OleDbType.LongVarChar).Value = incidentSolution
tr.Commit()
MsgBox("Save successful")
Catch ex As Exception
mdInit.errorLog(ex.Message, ex.StackTrace)
MsgBox("Failed to save data, refer to error log")
tr.Rollback()
End Try
End Function
Ich glaube, Sie nennen müssen 'Dc.ExecuteNonQuery()' 'vor tr.Commit()' – user5226582
@ user5226582 Ja, danke, natürlich ... einfach etwas dumm – David