我想根据用户输入的条件在数据库中找到匹配的记录,用ado方法时无法找到,同样条件下用dao编写的代码却可以找到,请问这是什么问题?代码如下:
'TitleName 是一个textbox
SQL = "SELECT * From bzxx WHERE [title] like '*" & TitleName & "*';"
'ado method
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
cnn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0; " _
        & "Data Source=" & App.Path & "\zyk.mdb; Persist Security      Info=False"
If rst.State = adStateOpen Then rst.Close
rst.Open SQL, cnn, adOpenStatic, adLockReadOnly
Debug.Print rst.RecordCount
'此时得到rst.recordcount=0,实际上数据库中有满足条件的记录'dao method
Dim db As DAO.Database
Dim daorst As DAO.Recordset
Set db = OpenDatabase(App.Path & "\zyk.mdb")
Set daorst = db.OpenRecordset(SQL, dbOpenSnapshot)
daorst.MoveFirst
daorst.MoveLast
Debug.Print daorst.RecordCount
'此时却可以找到满足的记录!

解决方案 »

  1.   

    ADO中like语句的使用如下
    SQL = "SELECT * From bzxx WHERE [title] like '%" & TitleName & "%';"用的百分号做通配符
      

  2.   

    rst.Open SQL, cnn, adOpenStatic, adLockReadOnly
    Debug.Print rst.RecordCount打开方式不对,试试看:
    rst.Open SQL, cnn, adOpenStatic, adLockOptimistic
      

  3.   

    SQL = "SELECT * From bzxx WHERE [title] like '%" & TitleName & "%'"