如何在数据库中插入数组文本框和组合框?我必须在Access中保存每个newbox和newcombo,它应该在不同的行中。保存数据时,它没有将错误对象引用设置为对象的实例
Imports System.Data.OleDb
Imports System.IO
Public Class Form1
Dim form As New Form
Dim boxes As New List(Of TextBox)
Dim combo As New List(Of ComboBox)
Private Sub Addbuttons(ByVal buttonCount As Integer)
Dim newbox As TextBox
Dim newcombo As ComboBox
For i As Integer = 1 To buttonCount
newbox = New TextBox
newbox.Size = New Drawing.Size(533, 50)
newbox.Location = New Drawing.Point(227, 531 + 70 * (i - 1))
newbox.Name = ""
newbox.Text = newbox.Name
'connect it to a handler, save a reference to the array and add it to the form controls
boxes.Add(newbox)
Me.Controls.Add(newbox)
Next
For i As Integer = 1 To buttonCount
newcombo = New ComboBox
newcombo.Size = New Drawing.Size(57, 20)
newcombo.Location = New Drawing.Point(864, 531 + 70 * (i - 1))
combo.Add(newcombo)
Me.Controls.Add(newcombo)
Next
End Sub
'Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'End Sub
'Private Sub btnitem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnitem.Click
' Addbuttons(Val(txtitem.Text))
'End Sub
Private Sub loaduom(ByRef newcombo As ComboBox)
Try
datab = "Select uom from uom"
connDB()
cmd = New OleDbCommand(datab, conn)
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
newcombo.Items.Clear()
Do While dr.Read = True
' txtdepartadd.Items.Add(dr("Departmentname"))
newcombo.Items.Add(dr(0))
Loop
Catch ex As Exception
MsgBox(ex.Message)
Finally
cmd.Dispose()
conn.Close()
End Try
End Sub
Private Sub loading()
For Each uomlo As ComboBox In combo
loaduom(uomlo)
Next
End Sub
'Private Sub loaduom()
' Throw New NotImplementedException
'End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim msgboxresponse As MsgBoxResult
msgboxresponse = MsgBox("Are You Sure of the number of Item you choose?Please Check Again", _
MsgBoxStyle.Question + MsgBoxStyle.YesNo, Me.Text)
If msgboxresponse <> MsgBoxResult.Yes Then
Else
Addbuttons(Val(txtitem.Text))
txtitem.Enabled = False
Button1.Enabled = False
loading()
loadstat()
Return
End If
End Sub
Private Sub addbuyer(ByRef newbox As TextBox, ByRef newcombo As ComboBox)
'Dim newbox As TextBox
'Dim newcombo as combobox
Try
datab = " Insert INTO sample (sample1,sample2) values ( '" & newbox.Text & "','" & newcombo.Text & "')"
connDB()
cmd = New OleDbCommand(datab, conn)
Dim i As Integer
i = cmd.ExecuteNonQuery
If i > 0 Then
MsgBox("Added SUccesfully", MsgBoxStyle.Information, "Confirmation")
Else
MsgBox("Failed Adding", MsgBoxStyle.Information, "Alert!")
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
cmd.Dispose()
conn.Close()
End Try
End Sub
Private Sub btnsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave.Click
Dim buttonCount As Integer = Val(TextBox1.Text)
'start from 0 because it's 0-based index
For i As Integer = 0 To buttonCount - 1
addbuyer(boxes(i), combo(i))
Next
End Sub
End Class
答案 0 :(得分:0)
以下是根据您当前的代码
进行操作的方法在Button2_Click
:
1)获取控件总数
2)循环并调用addbuyer
通过引用传递控件
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim buttonCount As Integer = Val(txtitem.Text)
'start from 0 because it's 0-based index
For i As Integer = 0 To buttonCount - 1
addbuyer(boxes(i), combo(i))
Next
End Sub
在addbuyer
:
1)将ByRef newbox As RichTextBox
更改为ByRef newbox As TextBox
2)注释掉(或删除)前两行,他们不需要
Private Sub addbuyer(ByRef newbox As TextBox, ByRef newcombo As ComboBox)
'Dim newbox As TextBox
'Dim newcombo as combobox
Try
datab = " Insert INTO sample (sample1,sample2) values ( '" & newbox.Text & "','" & newcon.Text & "')"
connDB()
cmd = New OleDbCommand(datab, conn)
Dim i As Integer
i = cmd.ExecuteNonQuery
If i > 0 Then
' MsgBox("Added SUccesfully", MsgBoxStyle.Information, "Confirmation")
Else
MsgBox("Failed Adding", MsgBoxStyle.Information, "Alert!")
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
cmd.Dispose()
conn.Close()
End Try
End Sub