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

时间:2016-02-28 06:31:49

标签: vb.net ms-access

如何在数据库中插入数组文本框和组合框?我必须在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

1 个答案:

答案 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