【问题标题】:Access VBA: Get difference in value between current and previous record访问 VBA:获取当前记录和以前记录之间的值差异
【发布时间】:2014-04-22 05:14:59
【问题描述】:

我已根据此链接根据查询进行了报告:

http://www.techonthenet.com/access/queries/max_query2.php

它给了我带有值的记录列表:

(主键)
ID.......FirstNum....SecNum......直径......所有者
1........100200........01.......150.......彼得 2........100200.......02.......138........彼得 3........100300.......07........112........约翰

查询按直径降序排列记录。我想创建一个新列来计算第一条和第二条记录之间的差异,然后是第三条和第二条记录之间的差异,依此类推。像这样:

(主键)
ID.......FirstNum....SecNum......Diameter......DiffDiametral......Owner
1........100200.......01........150....... .....................彼得
2........100200........02............138............12.. .....................彼得
3........100300........07............112......26.. ...................约翰

我应该在 RowSource 或 DataSource 中为 DiffDiametral 写入什么来获取这些值?如何避免第一行的错误,我想从哪里减去以前的值?

我尝试根据此链接解决它: http://support.microsoft.com/kb/101081/en-us 但我没有解决它。只是我不知道如何参考之前的直径值来计算差异。

【问题讨论】:

    标签: sql vba ms-access report


    【解决方案1】:

    根据您的信息,应该使用子查询。只需将您的实际表名替换为 tblDiameters。

    SELECT C.ID, C.FirstNum, C.SecNum, C.Diameter, C.Owner, 
       (SELECT TOP 1 P.Diameter  
       FROM tblDiameters AS P  
       WHERE P.Diameter < C.Diameter  
       ORDER BY P.Diameter DESC ) 
        - C.Diameter AS DiffDiameter
    FROM tblDiameters AS C
    

    【讨论】:

    • 是否可以使用 DLookUp() 函数引用之前的记录?
    • @Seeter 不是 DLookup,而是 DMax,但可能会更慢。使用子查询有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多