我在需要对数据库一个表项进行查询,例如:
            id   name
             1   王刚
             2   李明
             3   王刚
             4   赵丁
      对name进行查询,看看每个人在数据库中出现在的次数。程序如下:  Dim db As Database
  Dim rs As Recordset
  Dim n As Integer
  Dim sqlstr As String  '存放查询语句
  Set db = OpenDatabase(App.Path & "\db1.mdb")
  sqlstr = "select * from log where name='王刚'"
  Set rs = db.OpenRecordset(sqlstr)
  rs.MoveLast
  MsgBox rs.RecordCount    以上代码可以得到一个人在数据库中出现的次数,可当我的人数增加到58个的时候,不可能再用58次select * from log where name='××'了。
    还请各位请教,如果我想得到个人姓名在数据库中出现的次数时,该如何操作。我暂时用的是DAO连接数据库。感谢!

解决方案 »

  1.   

    在界面上放一个文本框(或其它什么可以输入或选择的控件)
    然后
    sqlstr = "select * from log where name='" & text1.text & "'"
      

  2.   

    查某个名字在表中出现的次数:
    sqlstr = "select count(*) from log where name='" & text1.text & "'"
      

  3.   

    不好用movelast的最好遍历一偏。。要不
    strSQL = _T("select count(*) as Mycount from table where ......");
    rs.Open(CRecordset::dynaset,strSQL);
    CString str;
    rs.GetFieldValue("MyCount", str);
    str里装的就是个数
      

  4.   

    Select Count(*) As Number From TableName Where Name=''
      

  5.   

    select name,count(*) from log group by name
      

  6.   

    Dim db       As Database
      Dim rs       As new Recordset  '要用new實例化一個紀錄集
      Dim n        As Integer
      Dim sqlstr   As String  '存放查询语句
      Set db = OpenDatabase(App.Path & "\db1.mdb")
      sqlstr = "select count(id) as DispTimes,name from log group by name"
      Set rs = db.OpenRecordset(sqlstr)
      if not rs.eof then
          rs.movefirst
    '循環讀取紀錄集
          for n=1 to rs.recordcount           msgbox rs.fields("name") & "出現過" & rs.fields("disptimes") & "次"
               rs.movenext      '紀錄集下移到下一條紀錄
          next n
      end if
      if cbool(rs.state) then rs.close  '釋放紀錄集
      set rs=nothing
      

  7.   

    也许我没说明白,我的意思是说如何得到所有人名出现的次数,而不用使用很多的SELECT语句。譬如说上面的数据表,王刚出现了两次,李明出现了一次,赵丁出现了一次。要使用三句SELECT^^^^^^^^^^^,如果不同的人名增多了,那么使用的select也就多了^^^^
    怎么解决!!在FORM上加个TEXTBOX是觉得不可取的。因为后台自己操作的不能老依靠前台来解决。
    还有“群子”的 select name,count(*) from log group by name  小弟实在是不明白,那么下一步怎么得到每个人名的出现次数呢,请给个详细的代码实例。
      

  8.   

    sqlstr = "select count(id) as DispTimes,name from log group by name"
      Set rs = db.OpenRecordset(sqlstr)
    提示有错误!!!
    两个都是name吗,DispTimes前面不用定义了吗???
    还有没有rs.state这一项!????
      

  9.   

    select name,count(*) from log group by name
      

  10.   

    select name,count(*) from log group by name完了之后怎么得到出现的次数呢!!!
    rs.?????不会写了,指点指点??
      

  11.   

    dim i as longselect name,count(*) as n from log group by namers.open......for i = 0 to rs.recodcount -1
        debug.print rs.flends("name") & "      " & rs.flends("n")
    next
      

  12.   

    dim i as longselect name,count(*) as n from log group by namers.open......for i = 0 to rs.recodcount -1
        debug.print rs.flends("name") & "      " & rs.flends("n")
        rs.movenext      '少写了一句
    next
      

  13.   

    坤的:
    sqlstr = "select count(id) as DispTimes,name from log group by name"
    这一句中count(id)改为count(*)群子的:
    sqlstr = "select name,count(*) from log group by name"
    Set rs = db.OpenRecordset(sqlstr)
    rs.Fields(0)为个人姓名
    rs.Fields(1)为出现的次数
      

  14.   

    各位我的程序写完了,准备结贴了,下面是我的程序
    dim db as Database
    dim rs as Recordset
    dim sqlstr as String
      Set db = OpenDatabase(App.Path & "\db1.mdb")
      sqlstr = "select name,count(*) from log group by name"
      Set rs = db.OpenRecordset(sqlstr)
      for i = 0 to rs.recodcount -1
      msgbox rs.Fields("name")&rs.Fields(1)
      rs.MoveNext
      Next
      end sub
    可是还有一个问题。为什么rs.Fields(1)能得到出现次数???
      

  15.   

    你不是用了count()函数统计了出现的次数吗?rs.fields(1)是取出第二个字段的值
    自然就是出现的次数了嘛