一次使用数据填充多个文本框

时间:2013-04-20 10:32:58

标签: vb.net textbox

我有一个包含6个组框的表单,每个组框包含180个文本框,以及两个组合框。在从第一个组合框中选择一个值时,第二个组合框将从表中填充所需的数据。我的要求是,在从第二个组合框中选择一个值时,来自同一个表的过滤数据应该填充剩余的文本框。我使用的代码如下:

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
    Dim strConnection As String = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=c:\\users\\brisingr\\documents\\123\database.mdb"
    Dim objConnection As New OleDbConnection(strConnection)

    Dim strsql As String
    'strsql = "Select * from '" & ComboBox1.Text & "' where Style = '" & ComboBox2.Text & " '"
    Dim a As String
    Dim b As String
    Dim c As String
    Dim d As String
    a = "Select * from ["
    b = ComboBox1.Text
    c = "] where Style = ["
    d = ComboBox2.Text
    strsql = a & b & c & d & "]"
    Dim objCommand As New OleDbCommand(strsql, objConnection)

    Dim objDataAdapter As New OleDbDataAdapter(objCommand)
    Dim objDataTable As New DataTable("Buyers")
    objDataAdapter.Fill(objDataTable)

    objConnection.Close()
    objConnection.Dispose()
    objConnection = Nothing
    objCommand.Dispose()
    objCommand = Nothing
    objDataAdapter.Dispose()
    objDataAdapter = Nothing

    For i As Integer = 1 To 60
        Me.Controls("L1Ob" & i).Text = objDataTable.Rows(0)("Operation" & i)
    Next

End Sub

这里“操作”& (i)引用数据库的字段名称,其名称类似于operation1,operation2等......

此代码似乎对我不起作用。请帮忙..

1 个答案:

答案 0 :(得分:1)

这里有很多问题

Dim a As String
Dim b As String
Dim c As String
Dim d As String
a = "Select * from ["
b = ComboBox1.Text
c = "] where Style = ["
d = ComboBox2.Text
strsql = a & b & c & d & "]"
Dim objCommand As New OleDbCommand(strsql, objConnection)

首先,您在字段Style传递的值周围有方括号 这不是一个有效的语法。 Jet引擎假定这是一个参数。 实际上,传递参数是正确的方法。

a = "Select * from [" 
b = ComboBox1.Text
c = "] where Style = ?"
strsql = a & b & c
Dim objCommand As New OleDbCommand(strsql, objConnection)
objCommand.Parameters.AddWithValue("@p1", ComboBox2.Text)
Dim objDataAdapter As New OleDbDataAdapter(objCommand)
Dim objDataTable As New DataTable("Buyers")
objDataAdapter.Fill(objDataTable)

字段Style的值与参数一起传递。这留下了将占位符(?)替换为从组合框到框架的值的工作 您可以确定它最好知道这样做可以避免错误和SQL注入。

此代码仍然很弱。您应该完全确定第一个combobox1的内容无法修改为包含恶意文本而不是表名