Moin,
mit diesem Befehl möchte ich einen Datensatz in einer Accessdatenbank aktualisieren
Der Code aktualisiert immer den ersten Datensatz der Datentabelle egal welchen Wert ich für tblPositionID, den Primärschlüssel der Tabelle, eingebe und ich verstehe nicht warum.
In Zeile 19 wird dieser SQL-Code ausgegeben.
In Access direkt eingegeben, wird die richtige Zeile aktualisert, im Code immer die erste, egal welchen Wert ich für tblPositionID angebe.
Mit anderen Updates mit analogen Routinen funktioniert es.
mit diesem Befehl möchte ich einen Datensatz in einer Accessdatenbank aktualisieren
VB.NET-Quellcode
- Dim sql As String = "UPDATE tblPosition SET tblRechnungID = @tblRechnungID, Artikel = @Artikel, Beschreibung = @Beschreibung, SellerAssignedID = @SellerAssignedID, BuyerAssignedID = @BuyerAssignedID, UnitQuantity = @UnitQuantity, TaxPercent = @TaxPercent, TypeCode = @TypeCode, CategoryCode = @CategoryCode, NetUnitPrice = @NetUnitPrice, GrossUnitPrice = @GrossUnitPrice , UnitCode = @UnitCode WHERE tblPositionID = @PositionId"
- Using conn As New OleDbConnection(connString)
- conn.Open()
- Using comm As New OleDbCommand(sql, conn)
- comm.Parameters.Add("@tblRechnungID", OleDbType.Integer).Value = tblRechnungID
- comm.Parameters.Add("@Artikel", OleDbType.Char).Value = Artikel
- comm.Parameters.Add("@Beschreibung", OleDbType.Char).Value = Beschreibung
- comm.Parameters.Add("@SellerAssignedID", OleDbType.Char).Value = SellerAssignedID
- comm.Parameters.Add("@BuyerAssignedID", OleDbType.Char).Value = BuyerAssignedID
- comm.Parameters.Add("@UnitQuantity", OleDbType.Double).Value = UnitQuantity
- comm.Parameters.Add("@TaxPercent", OleDbType.Double).Value = TaxPercent
- comm.Parameters.Add("@TypeCode", OleDbType.Integer).Value = TypeCode
- comm.Parameters.Add("@CategoryCode", OleDbType.Integer).Value = CategoryCode
- comm.Parameters.Add("@NetUnitPrice", OleDbType.Double).Value = NetUnitPrice
- comm.Parameters.Add("@GrossUnitPrice", OleDbType.Double).Value = GrossUnitPrice
- comm.Parameters.Add("@UnitCode", OleDbType.Integer).Value = UnitCode
- comm.Parameters.Add("@cuserid", OleDbType.Integer).Value = actualUserID
- comm.Parameters.Add("@PositionId", OleDbType.Integer).Value = PositionID
- Debug.Print(GetFullCommandSQL(comm))
- Debug.Print(comm.ExecuteNonQuery())
- End Using
- End Using
Der Code aktualisiert immer den ersten Datensatz der Datentabelle egal welchen Wert ich für tblPositionID, den Primärschlüssel der Tabelle, eingebe und ich verstehe nicht warum.
In Zeile 19 wird dieser SQL-Code ausgegeben.
SQL-Abfrage
In Access direkt eingegeben, wird die richtige Zeile aktualisert, im Code immer die erste, egal welchen Wert ich für tblPositionID angebe.
Mit anderen Updates mit analogen Routinen funktioniert es.
NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).