插入两个dim的数组作为MS Access中的文本框和组合框列表



如何在数据库中插入数组文本框和组合框?我必须在 Access 中保存每个新框和新组合,它应该在不同的行中。保存数据时,它有一个错误对象引用未设置为对象的实例

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

以下是根据您当前代码进行操作的方法

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

最新更新