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为出纳,为什么这个程序就运行不对了,会显示
展开
 我来答
tjrmgs
推荐于2016-05-01 · TA获得超过5765个赞
知道大有可为答主
回答量:2161
采纳率:94%
帮助的人:1022万
展开全部
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式