Office中国论坛/Access中国论坛

标题: 计数函数 [打印本页]

作者: ycxchen    时间: 2009-1-1 11:24
标题: 计数函数
各位网友,新年好!向大家请教两个问题:

1、Dlookup 函数与Dcount函数都能计算记录数,请问,在实际应用中两者有何区别?
2、我在一例子中,想计算一查询中的记录数,并在msgbox中显示,但当查询中r的记录数大于几千条时,下面语句运行的速度很慢,请问,如何修改语句才能在msgbox语句中快速显示出记录数,即dcount()的计算结果?
If MsgBox("您确实要执行删除操作吗?" & DCount("[姓名]", "查询1") & " 条记录删除后数据将不能够恢复!", vbQuestion + vbYesNo, "提示") = vbNo The
....................
作者: Henry D. Sy    时间: 2009-1-1 11:31
1、Dlookup 函数与Dcount函数都能计算记录数

Dlookup是在域中找某个值
Dcount计算某域中的记录数
作者: Henry D. Sy    时间: 2009-1-1 11:34
2
域函数的性能都存在着这个通病,视乎没有什么优化的方法
试试,改用记录集。
作者: ycxchen    时间: 2009-1-1 11:34
十分多谢6D!1楼的第2个问题如何解决呢?
作者: ycxchen    时间: 2009-1-1 11:39
谢谢!我先试一试
作者: ycxchen    时间: 2009-1-1 12:23
6D版主,我试写了用记录集的语句,但对记录集的语句不熟悉,写不好,能否帮我修改一下?
[attach]34193[/attach]
作者: ycxchen    时间: 2009-1-1 20:03
我看了书,找到了答案,将语句改成如下,供大家参考:
If MsgBox("您确实要执行删除操作吗?" & Me.RecordsetClone.RecordCount & " 条记录删除后数据不能被恢复!", vbQuestion + vbYesNo, "提示") = vbNo Then
作者: df    时间: 2009-1-1 22:48
参考参考
作者: ycxchen    时间: 2009-1-1 22:55
重新看了帮助文件,RecordsetClone属性对当前窗体记录,对于特定查询等中记录数还是不对的。7楼的代码不行,请问,如何将表1中“终止”字段值为“true”的记录数通过记录集的语句计算出来?盼大家指点。
作者: Henry D. Sy    时间: 2009-1-2 07:22
Private Sub Command14_Click()
    Dim sql As String
    Dim rs As New ADODB.Recordset
    Dim intCount As Integer
    rs.Open "查询2", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    intCount = rs.RecordCount
    rs.Close
    If MsgBox("您确实要执行删除操作吗?" & intCount & " 删除后数据不能被恢复!", vbQuestion + vbYesNo, "提示") = vbNo Then
        Exit Sub
    Else
        DoCmd.Close
        sql = "Delete FROM 表1 WHERE (((表1.中止)=True));"
        CurrentProject.Connection.Execute sql
        MsgBox "记录已被成功删除!", 0, "温馨提示"
    End If
    Set rs = Nothing
End Sub

[ 本帖最后由 Henry D. Sy 于 2009-1-2 07:23 编辑 ]
作者: ycxchen    时间: 2009-1-2 08:47
万分感谢6D版主的无私指点!受益不少!我看了书,想用下面语句,但不行,因OpenRecordset的帮助文件是英文的,我英文不太好,只好向大家请教,下面的语句为何不行呢?

Set re = CurrentDb.OpenRecordset("查询2")
MsgBox re.RecordCount
作者: Henry D. Sy    时间: 2009-1-2 09:28
Dim re As DAO.Recordset
    Set re = CurrentDb.OpenRecordset("查询2")
    re.MoveLast
    re.MoveFirst
    MsgBox re.RecordCount
作者: ycxchen    时间: 2009-1-2 09:38
万分感谢6D版主!你的水平真厉害!
作者: XTGCH    时间: 2009-1-3 20:56
谢谢分享
作者: ycxchen    时间: 2009-1-5 22:45
今天,再想了想后对本问题还有些不明。如果用DAO语句,在12楼的代码为什么不用加上关闭Recordset对象及从内存中删除的语句?而10楼的ADO语句代码则要的?盼大家指教。
作者: Henry D. Sy    时间: 2009-1-6 02:25
10楼是完整代码
12楼是在您的基础上加了两句移动光标。应该关闭的,我以为您有关闭、
作者: ycxchen    时间: 2009-1-6 08:56
万分感谢6D版主!




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