我创建了一个程序,用于显示访问数据库中不同表的数据(无需使用向导即可连接到数据库。即,所有连接均经过硬编码),我创建了一个简单的搜索,可以在一个表中搜索一个字段。但是,我想创建一个函数,使我可以搜索表中的所有字段。以下是我创建的简单搜索功能。
Public Sub Search()
con.Open()
Dim dt As New DataTable("Table1")
Dim rs As New OleDb.OleDbDataAdapter("Select * from Table1 where FirstName = '" & txtTabel1.Text & "'", con)
rs.Fill(dt)
dgvTabel2.DataSource = dt
dgvTabel2.Refresh()
rs.Dispose()
con.Close()
end sub
新功能应如下所示
Public Sub SearchHard(TableName As String)
con.Open()
Dim dt As New DataTable("TableName")
Dim rs As New OleDb.OleDbDataAdapter(("Select * from " & TableName & " where FirstName = '" & txtTabel1.Text & "'") Or ("Select * from " & TableName & " where LastName = '" & txtTabel1.Text & "')"), con)
'SELECT * FROM MyTable WHERE FirstName LIKE '% txtTable1.text %' OR LastName LIKE '%txtTable1.tetx%'
rs.Fill(dt)
dgvTabel1.DataSource = dt
dgvTabel1.Refresh()
rs.Dispose()
con.Close()
End Sub
如果该函数可以接受参数来选择其他表以减少过度使用代码,那也将是一个很大的好处。任何和所有帮助将不胜感激
搜索工作代码。
con.Open()
Dim dt As New DataTable("Table1")
Dim rs As New OleDb.OleDbDataAdapter("SELECT * FROM Table1 WHERE (FirstName = '" & txtTabel1.Text & "') or (LastName = '" & txtTabel1.Text & "')", con)
rs.Fill(dt)
dgvTabel1.DataSource = dt
dgvTabel1.Refresh()
rs.Dispose()
con.Close()
您在其中输入了一些错误的引号:
"Select * from Table where Field1 = '" & txtTabel1.Text & "'" or Field2 = '" & txtTabel1.Text"'"
应该
"Select * from Table where Field1 = '" & txtTabel1.Text & "' or Field2 = '" & txtTabel1.Text & "'"
现在,您当然可以TableName
像这样使用参数了
"Select * from " & TableName & " where Field1 = '" & txtTabel1.Text & "'"
但是不同的表将具有不同的字段名称,因此这实际上是行不通的。最后,您将不得不添加大量参数并重新创建SQL。
更好的解决方案是将完整的SQL SELECT字符串传递给您的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句