Ich versuche, mehrere Zeilen in eine Access-Datenbank einzufügen. Die Tabelle heißt sales
mit den Spalten sandwich
und price
. Die Daten, die ich einfügen möchte, sind in mehreren Steuerelementen TextBox
enthalten.Wie fügt man mehrere Zeilen in eine Access-Datenbank ein?
Bisher habe ich diesen Code versucht:
Dim sql As String = "INSERT INTO [sales] ([sandwich]) VALUES ([@sandwich])"
Try
Using conn As New OleDbConnection(constring)
Using cmd As New OleDbCommand(sql, conn)
conn.Open()
For Each Order As TextBox In grpbill.Controls
If Order.Text.Length > 0 Then
cmd.Parameters.AddWithValue("@sandwich", Order.Text)
cmd.ExecuteNonQuery()
End If
Next Order
End Using
conn.Close()
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
Es funktioniert gut. Das Programm prüft nur auf volle TextBox
Steuerelemente und fügt die richtige Anzahl von Zeilen ein, aber wenn ich die Datenbank überprüfe, sind die Werte alle gleich, wobei der Wert des letzten TextBox
immer wieder eingefügt wird.
Irgendwelche Ideen, wie das zu beheben?
Ich bezweifle es richtig gar mit mehr als einem textBox im grpbox arbeitet - man kann nicht AddWithValue immer und immer wieder - wenn es drei Elemente sind, wird es versuchen, 3 Parameter hinzuzufügen, mit der Derselbe Name, der natürlich ausfallen wird. – Plutonix
Zuerst würde ich 'grpbill.Controls' zu' grpbill.Controls.OfType (Of TextBox)() 'ändern. Auf diese Weise wissen Sie, dass Sie sich immer nur mit einer TextBox beschäftigen werden. Und Sie sollten überlegen, Ihren Parameter vor dem 'For 'hinzuzufügen und dann den Wert in jeder Schleife zu aktualisieren. – Bugs
@Plutonix Wie ich am Ende meiner Frage gesagt habe, gibt das Programm immer wieder denselben Wert ein. Ich würde nicht fragen, ob nichts falsch war: S –