Office中国论坛/Access中国论坛

标题: 代码出错请指教,急急!!! [打印本页]

作者: fnsmydyang    时间: 2008-8-25 20:47
标题: 代码出错请指教,急急!!!
运行错误:
[attach]31746[/attach]
调试:
[attach]31747[/attach]

请教为什么会这样...[:30]
作者: tz-chf    时间: 2008-8-25 21:48
dim rs as dao.recordset
作者: tanhong    时间: 2008-8-25 21:52
变量申明有问题,造成类型不匹配错,
从你的代码来看.做如下修改就可以了
Dim rs As DAO.Recordset
作者: tanhong    时间: 2008-8-25 21:53
如果引用的ADO
Dim rs As ADODB.Recordset
作者: fnsmydyang    时间: 2008-8-26 22:04
标题: 代码出错,谢谢了
非常感谢各位的指教,谢谢了...,为什么只有1笔记录?
Private Sub Form_Load()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = DAO.OpenDatabase("E:\程序\Northwind.mdb")
    Set rs = db.OpenRecordset("SELECT 订单.* FROM 订单")
    MsgBox rs.RecordCount
end sub
[attach]31760[/attach]

[ 本帖最后由 fnsmydyang 于 2008-8-26 22:27 编辑 ]
作者: tz-chf    时间: 2008-8-26 23:35
不是1笔,是"有"记录.要movelast一下
作者: tanhong    时间: 2008-8-27 09:23
造成记录数不准确的原因,是因为用recordset访问到的是内存中的记录数,不是所有的该记录集的数目,为了得到准确的记录集数,必须移动指针到最后一条记录,再将指针返回第一条记录,就能得到准确的记录数了,另你的代码最好加上关闭数据库及记录集语句,并释放它们所占用内存语句,这样代码才算完整,以下是本人修改的,仅供参考。
Private Sub Form_Load()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = DAO.OpenDatabase("E:\程序\Northwind.mdb")
    Set rs = db.OpenRecordset("SELECT 订单.* FROM 订单")
        rs.MoveLast    '移动指针到最后一条记录
    rs.MoveFirst   '返回指针到第一条记录
    MsgBox rs.RecordCount
         '关闭数据库及记录集,并释放占用内存,以提高系统运行效率
           rs.Close  '关闭记录集
          db.Close  '关闭数据库

    '释放占用内存
    Set db = Nothing
        Set rs = Nothing
End Sub

[ 本帖最后由 tanhong 于 2008-8-27 09:48 编辑 ]
作者: tz-chf    时间: 2008-8-27 09:28
是不是该先关闭记录集,再关数据库?
作者: tanhong    时间: 2008-8-27 09:48
哦!是的,哈哈.[:13]
作者: fnsmydyang    时间: 2008-8-27 20:46
标题: 回复 7# 的帖子
非常感谢各位的指教,真是受益非浅了,学海无涯、无止境...




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3