我有一个包含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等......
此代码似乎对我不起作用。请帮忙..
答案 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的内容无法修改为包含恶意文本而不是表名