複数の行をAccessデータベースに挿入しようとしています。テーブルの名前はsales
で、カラムはsandwich
およびprice
です。挿入しようとしているデータは、複数のコントロールTextBox
に含まれています。複数の行をアクセスデータベースに挿入するにはどうすればよいですか?
は、これまでのところ、私はこのコードを試してみた:
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
それが正常に動作しています。プログラムは完全なTextBox
コントロールのみをチェックし、正しい数の行を挿入しますが、データベースをチェックすると値はすべて同じで、最後のTextBox
の値を繰り返し挿入します。
これを修正する方法はありますか?
私はそれがgrpboxに複数のてtextBoxで右全く働いている疑い - あなたは何度もAddWithValueすることはできません - 3つの項目がある場合、それはとの3つのパラメータを追加しようとしますコースが失敗すると同じ名前。 – Plutonix
まず、 'grpbill.Controls'を' grpbill.Controls.OfType(Of TextBox)() 'に変更します。そうすれば、あなたは 'TextBox'を扱うことしかできません。また、 'For'の前にパラメータを追加し、各ループの値を更新することを検討してください。 – Bugs
@Plutonix私の質問の最後に述べたように、プログラムは同じ価値を何度も繰り返しています。何も間違っていないかどうかは問いません。S –