Office中国论坛/Access中国论坛

标题: 计算平均值 [打印本页]

作者: apeng    时间: 2005-10-11 04:04
标题: 计算平均值
[attach]13557[/attach]

想用窗体来控制计算每条记录的平均值

比如窗体中输入19:30至20:30,就计算字段19:30,19:45,20:00,20:15,20:30的平均值,显示在表中

谢谢大家


作者: LucasLynn    时间: 2005-10-11 06:21
DSum/DCount
作者: 海狸先生    时间: 2005-10-11 06:29
又是这种交叉表式的表......如果就是固定这么几个字段还好说,多了就
作者: 8888888888    时间: 2005-10-11 18:11
[em04][em07]
作者: apeng    时间: 2005-10-11 18:32
LucasLynn:可以说具体些吗,谢谢海狸先生:一共有72个字段,从06:00-24:00每小时4个,好处理吗?
作者: apeng    时间: 2005-10-11 22:42
顶起来
作者: huangxd007    时间: 2005-10-12 01:47
[em06]
作者: LucasLynn    时间: 2005-10-12 02:14
以下是引用apeng在2005-10-11 10:32:00的发言:



LucasLynn:可以说具体些吗,谢谢

海狸先生:一共有72个字段,从06:00-24:00每小时4个,好处理吗?

已经很具体了。

再具体就查这两个函数的文档吧。
作者: wanshan    时间: 2005-10-12 05:53
有一个笨办法可以解决这个问题:[attach]13581[/attach]


作者: LucasLynn    时间: 2005-10-12 20:12
以下是引用apeng在2005-10-11 10:32:00的发言:



LucasLynn:可以说具体些吗,谢谢

海狸先生:一共有72个字段,从06:00-24:00每小时4个,好处理吗?



首先你这个表这样设计非常不好。

把时间段作为字段,这样的方法导致了时间段难以比较和遍历。

较合理的方法是原始表只保留4个字段:ID,电视台,时间,数据

然后使用交叉表查询生成你现在的这个格式。
作者: apeng    时间: 2005-10-12 22:01
非常感谢各位老师的回答,谢谢谢谢我只所以这样设计表也是被迫的,因为如果按照LucasLynn的设计方法,每天的数据量将有10万行,并且需要转换数据,原始数据的格式就是我表中的格式,所以才考虑这样,无论如何,还是感谢各位
作者: LucasLynn    时间: 2005-10-12 23:02
以下是引用apeng在2005-10-12 14:01:00的发言:



非常感谢各位老师的回答,谢谢谢谢

我只所以这样设计表也是被迫的,因为如果按照LucasLynn的设计方法,每天的数据量将有10万行,并且需要转换数据,原始数据的格式就是我表中的格式,所以才考虑这样,无论如何,还是感谢各位

你有这么多条记录,你现在要计算某段的平均值,那到底是对一条记录,还是对多条记录,还是对整个表?
作者: apeng    时间: 2005-10-12 23:07
wanshan的方法得到的结果是我想要的
作者: LucasLynn    时间: 2005-10-13 17:28
以下是引用apeng在2005-10-12 15:07:00的发言:

wanshan的方法得到的结果是我想要的





72个字段……

不过能解决就好。[em05]

[此贴子已经被作者于2005-10-13 9:30:50编辑过]


作者: zhuyiwen    时间: 2005-10-26 21:33
<DIV class=quote>以下是引用apeng在2005-10-10 20:04:00的发言:

[attach]13813[/attach]





Private Sub ChangeQry()

   Dim qdfTemp As QueryDef

    Dim st As String

    Dim en As String

    Dim c As Integer

    Dim k As Integer

    Dim x As Integer

    Dim sql As String

    Dim ss As String

   

    If Not (IsNull(s) Or IsNull(e)) Then

   

        sql = "SELECT ID, 字段1"

        c = 1

        

        If e > s Then

            st = s

            en = e

        Else

            st = e

            en = s

        End If

        

        

        ss = "[" & st & "]"

        sql = sql & ", " & ss

            Do While st < en

                k = Val(Mid(st, 1, 2))

                x = Val(Mid(st, 4, 2)) + 15

               

                k = k + x \ 60

                x = x Mod 60

                st = Format(k, "00") & ":" & Format(x, "00")

                c = c + 1

                ss = ss & " + [" & st & "]"

                sql = sql & ", " & " [" & st & "]"

                'Debug.Print st, c, ss, sql

            Loop

        sql = sql & ", " & "(" & ss & ")/" & c & " AS 平均收视率 FROM 报告备份;"

        'Debug.Print sql

        Set qdfTemp = CurrentDb.QueryDefs("查询1")

        qdfTemp.sql = sql

        

        Me.Child6.SourceObject = ""

        Me.Child6.SourceObject = "查询.查询1"

   

    End If

End Sub



[此贴子已经被作者于2005-10-26 13:37:30编辑过]


作者: apeng    时间: 2005-10-26 21:59
谢谢朱总出手,谢谢,学习中
作者: chenaisi    时间: 2005-12-15 17:13
我也想知道






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