看王国荣的VB数据库设计,范例有一段调不过去了,就在我本上不行,换自己的台式机就OK。求解
Private Sub Command2_Click()
    List1.Clear
    ' 搜寻所有「成交量」字段大于10000的股票,使用FindLast及FindPrevious
    criteria = "成交量 > 10000"
    ret = FindLast(Adodc1.Recordset, criteria) '<-------------在这提示类型不匹配
    While ret
        List1.AddItem Adodc1.Recordset("股票名称") & " = " & _
                      Adodc1.Recordset("成交量")
        ret = FindPrevious(Adodc1.Recordset, criteria)
    Wend
End SubPrivate Sub Form_Load()
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path & "\\stock01.mdb;Persist Security Info=False"
    Adodc1.CommandType = adCmdTable
    Adodc1.RecordSource = "股票行情表"
    Adodc1.Refresh
    Set DataGrid1.DataSource = Adodc1End Sub’Find.bas
' 从最后一笔记录开始向上搜寻
Function FindLast(rs As ADODB.Recordset, ByVal criteria As String)
    On Error Resume Next
    rs.MoveLast
    rs.Find criteria, , adSearchBackward
    FindLast = Not rs.BOF And Err.Number = 0
End Function

解决方案 »

  1.   

    你没有定义变量类型,系统会默认为变体类型
    dim criteria as string
    criteria = "成交量 > 10000"
      

  2.   

    你说的我试过了 不是那个毛病 要不不会在两台机器上有不同的表现 我怀疑是因为某个DLL插件的问题 因为我的台式机是安装版的 本是ghost版 
    哪位大仙有其他建议啊!
      

  3.   

    Dim  ret  As BooleanFunction FindLast(rs As ADODB.Recordset, ByVal criteria As String) As Boolean
        On Error Resume Next
        rs.MoveLast
        rs.Find criteria, , adSearchBackward
        FindLast = Not rs.BOF And Err.Number = 0
    End Function
      

  4.   

    帅哥。。BCCN 那个也是我问的好不好!别贴过来了
      

  5.   

    程序报错中断时候在立即窗口里输出一下这几个变量的类型,
    ?typename(ret);typename(Adodc1.Recordset) ; TypeName(criteria)
    这样就知道哪个变量的类型出问题了