【问题标题】:Better code reuse更好的代码重用
【发布时间】:2014-05-26 21:49:25
【问题描述】:

我正在 VB.Net 中制作一个连接数据库并允许用户添加、编辑和删除记录等的程序。但是我希望能够使用一个模块来创建子例程和函数并在其中引用它们我的表格。我找到了一种方法来获取数据集中表的字段名称,以便我可以使用循环来获取字段并将数据写入其中。然而,我的问题是用于写入这些字段的控件必须明确命名(例如 txtFirst_Name 或 cboSubjects)。这让我很难完成我的任务,因为我无法使用循环添加到字段中,而且我必须为表单上的每个输入字段写一行,而不是循环 10 次。以下是我的代码副本,包括使用 subs。

添加到数据库

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    query = "Select * from Supplier"
    getTable()
    Try
        Dim cb As New OleDbCommandBuilder(da)
        Dim dSet_NewRow As DataRow
        dSet_NewRow = dSet.Tables("Table").NewRow
        dSet_NewRow.Item("Name") = TextBox1.Text
        dSet_NewRow.Item("Address1") = TextBox2.Text
        dSet_NewRow.Item("Address2") = TextBox3.Text
        dSet_NewRow.Item("Town") = TextBox4.Text
        dSet_NewRow.Item("County") = TextBox5.Text
        dSet_NewRow.Item("Country") = TextBox6.Text
        dSet_NewRow.Item("PostCode") = TextBox7.Text
        dSet.Tables("Table").Rows.Add(dSet_NewRow)
        da.Update(dSet, "Table")
        dSet.Tables.Clear()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

连接数据库

Sub Connect()
    Try
        conn.ConnectionString = connString
        conn.Open()
        'If conn.State = ConnectionState.Open Then
        'MsgBox("open")
        'End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

将信息放入数据集中

Sub getTable()
    Try
        da = New OleDbDataAdapter(query, conn)
        da.Fill(dSet, "Table")
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

有谁知道如何使用循环使用控件动态分配输入,而不必命名textbox1,textbox2......

【问题讨论】:

    标签: vb.net dataset oledb


    【解决方案1】:

    您的重用方法将提供给它们的变量。

    Public Shared Sub LoadSomeData(name As String, addr1 As String, addr2 As String, town As String, county As String, country As String, pc As String)
     Try
        Dim cb As New OleDbCommandBuilder(da)
        Dim dSet_NewRow As DataRow
        dSet_NewRow = dSet.Tables("Table").NewRow
        dSet_NewRow.Item("Name") = name
        dSet_NewRow.Item("Address1") = addr1
        dSet_NewRow.Item("Address2") = addr2
        dSet_NewRow.Item("Town") = town
        dSet_NewRow.Item("County") = county
        dSet_NewRow.Item("Country") = country
        dSet_NewRow.Item("PostCode") = pc
        dSet.Tables("Table").Rows.Add(dSet_NewRow)
        da.Update(dSet, "Table")
     Catch ex As Exception
        MsgBox(ex.Message)
     End Try
    End Sub
    

    用法:

    LoadSomeData(textbox1.Text, textbox2.Text, textbox3.Text, textbox4.Text, textbox5.Text, textbox6.Text, textbox7.Text)
    

    虽然我希望你能用一个有意义的名字来命名文本框 - tbName、tbAddress 等等......

    【讨论】:

    • 非常感谢您的回复。我明白你在说什么,但我不明白如何动态地将数据分配给这些变量。如果我想在具有不同控件的不同表单上使用相同的子,对我正在写入的表使用不同的字段名称,我会怎么做?
    • name 将是一个变量。它可以来自Form1.txtCustNameForm13.txtSomeOtehrName。当你调用 sub 时你会提供值
    猜你喜欢
    • 2015-12-31
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多