VB 根据combo控件选择的条件用 sql查询 access 中符合combo控件的信息
PrivateSubCommand10_Click()DimsqlAsStringDimconnAsNewADODB.ConnectionDimrsAsNewADODB....
Private Sub Command10_Click()
Dim sql As String
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\数据库.mdb;Persist Security Info=False"
sql = "select * from 表1 where " & Combo1.Text & " = " & Text5.Text & " "
rs.CursorLocation = adUseClient
rs.Open sql, conn, 3, 3
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
DataGrid1.Visible = True
End Sub
问题:假如combo1.text为序号,Text5.Text为2,这个程序就会顺利运行,显示序号全部为2的信息
假如combo1.text为姓名,Text5.Text为出纳,为什么这个程序就运行不对了,会显示 展开
Dim sql As String
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\数据库.mdb;Persist Security Info=False"
sql = "select * from 表1 where " & Combo1.Text & " = " & Text5.Text & " "
rs.CursorLocation = adUseClient
rs.Open sql, conn, 3, 3
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
DataGrid1.Visible = True
End Sub
问题:假如combo1.text为序号,Text5.Text为2,这个程序就会顺利运行,显示序号全部为2的信息
假如combo1.text为姓名,Text5.Text为出纳,为什么这个程序就运行不对了,会显示 展开
1个回答
展开全部
Access数据库要求对于字符型参数必须用一对双引号将其括起来(外层已有双引号时应改为单引号)以便告诉jet引擎参数的类型是字符型。另外如果参数属于时间/日期型则必须要用一对#号括起来。
当筛选字段为序号时其数据类型是数字,无需加引号,故语句可被正常运行;而选择为姓名时由于字段类型是字符型,参数未加引号,这样系统就会报错。解决办法是在代码中因应所选择的字段类型来决定是否在拼接Sql语句时对参数加引号或#号。例如:
If Combo1.Text="姓名" Then
Sql="select * from 表1 where " & Combo1.Text & "='" & Text5.Text & "'"
Else
sql="select * from 表1 where " & Combo1.Text & "=" & Text5.Text
End If
当筛选字段为序号时其数据类型是数字,无需加引号,故语句可被正常运行;而选择为姓名时由于字段类型是字符型,参数未加引号,这样系统就会报错。解决办法是在代码中因应所选择的字段类型来决定是否在拼接Sql语句时对参数加引号或#号。例如:
If Combo1.Text="姓名" Then
Sql="select * from 表1 where " & Combo1.Text & "='" & Text5.Text & "'"
Else
sql="select * from 表1 where " & Combo1.Text & "=" & Text5.Text
End If
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询