vb 动态查询中 输入所查询的内容后,点击动态查询按钮,表格显示内容为空

来源:百度知道 编辑:UC知道 时间:2024/05/16 23:38:08
'动态查询按钮的单击事件
Private Sub Command1_Click()
Dim dbname As String
Dim db As Database
dbname = App.Path
If Right$(dbname, 1) <> "\" Then dbname = dbname & "\"
'获得当前数据库
dbname = dbname & "office.mdb"
Set db = OpenDatabase(dbname)
db.Close
Data1.DatabaseName = dbname
'动态查询SQL语句
SQL = "select * from 公告信息 where '" & Combo1.Text & " ' = '" & Text1.Text & " '"
Data1.RecordSource = SQL
Data1.Visible = False
Data1.Refresh
MSFlexGrid1.Visible = True

End Sub
以上为点击动态按钮后的事件,请问怎么修改
改成 SQL = "select * from 公告信息 where " & Combo1.Text & " = '" & Text1.Text & " '" 这个后可以进行文字查询,然而进行编号查询(即输入数字)就会提示“数据类型不匹配”
若改成SQL = "select * from 公告信息 where " & Combo1.Text & " = " & Text1.Text & ""可以进行编号查询,当输入文字进行查询时系统会提示“实时错误3061,参数不足,期待是1”
这是什么原因<

SQL="select * from 公告信息 where " & Combo1.Text & " ='" & Text1.Text & "'"

也就是 Combo1.Text 的单引号不要

按你的代码看 Combo1 里是字段列表

= 号后面的内容 如果用 ' ' 单引号引起来 表示是字符串
如果用 # # 号引起来 表示是日期数据
没符号 表示是 数值

SQL = "select * from 公告信息 where " & Combo1.Text & " = '" & Text1.Text & " '"

Data1.Refresh'从你最后的这句话下面开始,把下面的语句加上就可以了。
Set MSFlexGrid1.DataSource = data1
MSFlexGrid1.Refresh
If data1.Recordset.EOF Then
MsgBox "无此记录"

Exit Sub
End If
End If