我用Adodc和DataGrid连接和显示数据库,在程序界面用一个TextBox(Textquery)和一个命令按钮(Commandquery)做一个查询,想在TextBox里输入要查询的东西,然后按命令按钮就能得到查询结果。但比如我输入sss,点Commandquery后,DataGrid显示表里所有记录,怎么回事?
Private Sub CommandQuery_Click()
            Dim mysql As String
            Set Cn = New ADODB.Connection
            Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=F:\VBDtatabase\mateford2.mdb"
            Cn.Open
            mysql = "select * From 表项 where LOTNO = ' "&TextQuery.Text & " ' "
            Set Rs = New ADODB.Recordset
            Rs.Open mysql, Cn, adOpenStatic
            Set DataGrid1.DataSource = Rs
End Sub

解决方案 »

  1.   

    把你的SQL语句换成这句试试
    mysql = "select * From 表项 where LOTNO = '" & TextQuery.Text & "'"
    你' "之间有空格
      

  2.   

    Cn.Open前加上
    cn.CursorLocation = adUseClient
      

  3.   

    Set Rs = New ADODB.Recordset
    Rs.CursorLocation = adUseClient
    Rs.Open mysql, Cn, adOpenKeyset, adLockOptimistic
    Set DataGrid1.DataSource = Rs
      

  4.   

    TO:vbman12003,用你的方法出现“From子句语法错误”,把Rs.Open mysql, Cn, adOpenKeyset, adLockOptimistic里的mysql改为“表项”,效果跟原来一样。
      

  5.   

    提示明确:语法错误!
    如果字段LOTNO是数值型:
    mysql = "select * From 表项 where LOTNO = "& TextQuery.Text 
    如果字段LOTNO是文本型:
    mysql = "select * From 表项 where LOTNO = ""& TextQuery.Text &"'" 
      

  6.   

    如果字段LOTNO是文本型:
    mysql = "select * From 表项 where LOTNO = '"& TextQuery.Text &"'" 
      

  7.   

    Provider=Microsoft.Jet.OLEDB.4.0
      

  8.   

    LOTNO是文本类型,你上面说的我都试过(改数据库引擎,我是直接在VB里建的Access数据库,引擎是Provider=Microsoft.Jet.OLEDB.3.51)
      

  9.   

    试过将Provider=Microsoft.Jet.OLEDB.3.51改为Provider=Microsoft.Jet.OLEDB.4还不行啊
      

  10.   

    奇怪啊,我原来这样写过,连一条记录都没查出来,原因是TEXTBOX控件中的字符串有空格所致,后来用TRIM 函数把右端空格去掉,就能查询到所需结果
      

  11.   

    TO:danielinbiti,如果不把Rs.Open mysql, Cn, adOpenStatic里的mysql改成“表项”就会出现“From 子句语法错误”