新手一个,业余爱好VB
最近在编个涉及统计的小程序
要求是这样的
统计出access中连续5个记录中某一个字段不同数值的个数,然后把这个统计的数值再保存到另外个字段里例如:
序号   得分
1       54
2       25
3       34
4       50
5       34
6       25     
7       80
8       34
...     ...
这样,统计得分执行的结果应该是4,3,4,4....这么一列数据保存到另外个字段里
条件比较多,新手迷茫啊
最初的思路是通过循环和if来做,但貌似代码一大串,执行效率肯定不怎么样知道sql里有个统计函数 count(distinct ...),但不知道怎么来组织,高手指条明路吧谢谢了  

解决方案 »

  1.   

    SQL语句无法直接做到,循环还是要的,if就不用了。
    我现在替你得到4,3,4,4....以下的活,你自己去干吧。Private Sub Command1_Click()
       Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\11.mdb;Persist Security Info=False"
       Adodc1.CommandType = adCmdText
       Adodc1.CursorLocation = adUseClient
       Adodc1.RecordSource = "select count(*) from tb2"
       Adodc1.Refresh
       Dim rdNum As Long, i As Long
       rdNum = Adodc1.Recordset.Fields(0)
       For i = 1 To rdNum - 4
           Adodc1.RecordSource = "select count(a) from (SELECT Count(得分) as a from (select * from tb2 where 序号>=" & _
                                  i & " and 序号<=" & i + 4 & ") group by 得分)"
           Adodc1.Refresh
           Debug.Print Adodc1.Recordset.Fields(0),
       Next
       
    End Sub
      

  2.   

    谢谢楼上的
    用group by分组得到这列字段是个好想法,不过这么多层的select,不知道效率如何,我有好多条数据啊
      

  3.   

    感觉可以少一层
    "SELECT Count(得分) as a from (select sum(序号) from tb2 where 序号>=" & _
                                  i & " and 序号<=" & i + 4 & " group by 得分)"
      

  4.   

    原来access不支持 count(distinct 字段)的