注册 登录
编程论坛 VB6论坛

求助:类型不匹配 调不过去了 求大仙帮忙

avrilkaso 发布于 2013-07-20 21:41, 616 次点击
看王国荣的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 Sub

Private Sub Form_Load()
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & App.Path & "\\stock01.mdb;Persist Security Info=False"
    = adCmdTable
    Adodc1.RecordSource = "股票行情表"
    Adodc1.Refresh
    Set DataGrid1.DataSource = Adodc1

End 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
4 回复
#2
Artless2013-07-21 11:08
dim ret as Boolean
Function FindLast(rs As ADODB.Recordset, ByVal criteria As String) as boolean
试试
#3
avrilkaso2013-07-21 12:03
回复 2楼 Artless
斑竹 还是报不匹配的错 是不是adodc1.recordset 传递时出现不匹配啊??我试了下,要是把系统重装然后在装VB,什么都不装的电脑就能运行,像我那本装了一堆东西的电脑,尤其是ghost装的就报错
#4
Artless2013-07-22 11:21
adodc ver?
#5
hjxlj2013-07-23 22:00
第一,明确将ret变量声明为Boolean,不会浪费你多少时间,但带来的好处显而易见。
第二,在FindLast函数的定义处请你明确声明函数的返回值类型,VB不会容忍用了Function关键字却没有声明返回值类型的函数定义。就算你的问题不是出在这里,至少也是一个隐患。
最后,想奉劝你一句,想要真正搞编程,请以认真,严谨的态度来对待自己的工作。


[ 本帖最后由 hjxlj 于 2013-7-23 22:42 编辑 ]
1