小弟有这么一段程序:
Set db = OpenDatabase(App.Path & "\log.mdb")
sqlstr = "select 姓名,count(*) from log group by 姓名"
Set rs = db.OpenRecordset(sqlstr)
For i = 0 To rs.RecordCount - 1
ReDim Preserve strM(i) As String
strM(i) = rs.Fields("姓名")
  rs.MoveNext
  Next我的问题是如何得到记录的总数!rs.RecordCount显然只能表示不同人名出现的次数。又不把rs.Fields(1)每次出现的次数相加。
还请各位高手指点指点 感谢

解决方案 »

  1.   

    rs.MoveLast
    cnt = rs.RecordCount因为你的sql语句用了GroupBy,所以出来的recordset是对每一个人名进行的次数统计。有多少人就有多少笔记录。你的程序已经是对的
      

  2.   

    sqlstr = "select 姓名,count(*) from log group by  Order by 姓名"
      

  3.   

    sqlstr = "select 姓名,count(*) from log group by 姓名 Order by 姓名"
      

  4.   

    我要总数,或者是最后一条记录的下标也可以呀!譬如说我库里有10个姓名,王×出现5次,李×出现5次,如果想得到总数10,rs.RecordCount是做不到的!
      

  5.   

    sqlstr = "select 姓名,count(*) from log group by 姓名 Order by 姓名"
      

  6.   

    在Recordset打开的时候,修改参数,如:
    rsSelSubject.Open strSql, adoConnection, adOpenKeyset, adLockPessimistic
      

  7.   

    rs.MoveLast
    cnt = rs.RecordCount
    只能得到最后一条记录,也就是李×出现的次数cnt最后的5
      

  8.   

    抱歉,刚才没看清楚你的问题。为什么不能将field(1)累加吗?这样加起来就是你要的记录总数。除此之外似乎只有重新select count(*)一遍。
      

  9.   

    你的这条语句根本就达不到这个要求。
    可以另写一个专门找记录数,
    sqlstr = "select count(*) from log "
      

  10.   

    1
    sqlstr = "select count(*) from log "
    msgbox rs.fields(0)2
    sqlstr = "select * from log order by 姓名"
    msgbox rs.recordcount
      

  11.   

    用一个sql语句实现的方法:
    call rst.open("select name from log order by name", ...)
    idx = -1
    reccnt = 0
    strCurrName = ""
    do while not rst.eof
       if (rst!name<>strCurrName) then
          strCurrName = rst!name
          idx = idx + 1
          strName(idx) = rst!name
       else
          ''
       end if
       reccnt = reccnt + 1
       rst.MoveNext
    loop
      

  12.   

    是因为你的SQL语句中包含了聚合函数GROUP BY 了,所以你得到的结果集就是被聚合后的结果
    用Recordcount肯定不能达到你想要结果了.
    如 if123() 所说的做吧.
    1
    sqlstr = "select count(*) from log "
    msgbox rs.fields(0)2
    sqlstr = "select * from log order by 姓名"
    msgbox rs.recordcount
      

  13.   

    sqlstr = "select * from log order by 姓名"
    msgbox rs.recordcount
      

  14.   

    rs.open "... ...", connection, adopenstatic, adlockreadonly
      

  15.   

    sqlstr = "select * from log order by 姓名"
    rs.RecordSource=sqlstr
    Dim MyCount As Integer
        MyCount = 0
            While Not rs.EOF
                MyCount = MyCount + 1
                rs.MoveNext
            Wend
    Print MyCount
      

  16.   

    sqlstr = "select 姓名,count(*) as [Count] from log group by  Order by 姓名"
    然后再用
    Msgbox rs.fields(1).value就OK了。
      

  17.   

    好象改一下数据库和记录集的打开方式就可以用recordcount属性得到了!
      

  18.   

    select count(字段1)+count(字段2)+.....count(字段n) from log group by 姓名"