Hallo zusammen,
ich arbeite mit einem DataGrid das mit einer Oracle-DB aggiert.
Insert -\Select -Command funktionieren hervorragend. Nur das Update-Command schlägt mit vorliegender Exception fehl:
Exception:
ORA-1830: Date format picture ends before converting entire input string.
Die Datentpen im Quellcode sowie in der Datenbank sind identisch.
Habe mal die RowState-Eigenschaft untersucht. Beim anstehenden Update-Command verfügt die RowState-Eigenschaft sowohl einen Wert für die Kostante Current als auch Original.
Sub New()
With ds.Tables.Add("Lunch")
tbl = ds.Tables("Lunch")
.Columns.Add("Auftragsnummer")
.Columns.Add("BenutzerID")
.Columns.Add("Bestelldatum")
.Columns.Add("Menue")
.Columns.Add("Betrag")
'.Columns.Add("Timestamp")
.Columns("Auftragsnummer").AutoIncrement = True
.Columns("Auftragsnummer").AutoIncrementSeed = -1
.Columns("Auftragsnummer").AutoIncrementStep = -1
.PrimaryKey = New DataColumn() {.Columns("Auftragsnummer")}
End With
With da.TableMappings.Add("Table", "Lunch").ColumnMappings
.Add("LunchID", "Auftragsnummer")
.Add("EmpyID", "BenutzerID")
.Add("OrderDate", "Bestelldatum")
.Add("MyOrder", "Menue")
.Add("Amount", "Betrag")
'.Add("Timestamp", "Timestamp")
End With
Function DA_Update() As Boolean
If ds.HasChanges = True Then
Try
oOraCon.Open()
' DML logic for DataAdapter
da.UpdateCommand = SubmitUpdateCommand()
da.InsertCommand = SubmitInsertCommand()
da.DeleteCommand = SubmitDeleteCommand()
da.Update(tbl)
oOraCon.Close()
Catch exOracle As OracleException
MessageBox.Show(exOracle.Message)
oOraCon.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
oOraCon.Close()
End Try
Else
MessageBox.Show("Keine Änderungen zu speicher") ' TEST
oOraCon.Close()
End If
End Function
Function SubmitUpdateCommand() As OracleCommand
Dim strSQL As String
strSQL = "UPDATE LUNCH " & _
"SET EmpyID = pEmpyID, Orderdate = pOrderDate, Myorder = pMyOrder," & _
"Amount = pAmount " & _
"WHERE LunchID = pLunchID"
Dim cmdUpdate As New OracleCommand(strSQL, oOraCon)
With cmdUpdate.Parameters
.Add("pLunchID", OracleDbType.Int64, 10, "Auftragsnummer")
.Add("pEmpyID", OracleDbType.Int64, 10, "BenutzerID")
.Add("pOrderdate", OracleDbType.Date, 30, "Bestelldatum")
.Add("pMyOrder", OracleDbType.NVarchar2, 10, "Menue")
.Add("pAmount", OracleDbType.NVarchar2, 10, "Betrag")
Dim param As OracleParameter
param = .Add("pLunchID", OracleDbType.Int64, 10, "Auftragsnummer")
param.SourceVersion = DataRowVersion.Original
End With
Return cmdUpdate
End Function |