访问VBA:获取当前记录和先前记录之间的值差异

时间:2014-04-21 19:29:20

标签: sql vba ms-access report

我根据此链接根据查询做了报告:

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

它为我提供了包含值的记录列表:

(的PrimaryKey)
ID ....... FirstNum .... SECNUM .....直径.....所有者
1 ........ 100200 ....... 01 ............... 150 ..............彼得<登记/> 2 ........ 100200 ....... 02 ............... 138 ..............彼得<登记/> 3 ........ 100300 ....... 07 ............... 112 ..............约翰< BR />

查询按Diametral降序对记录进行排序。我想制作新的列,它将计算第一和第二记录之间的差异,然后在第三和第二记录之间,依此类推。像这样:

(的PrimaryKey)
ID ....... FirstNum .... SECNUM .....直径..... DiffDiametral .....所有者
1 ........ 100200 ....... 01 ............... 150 ................ .......................彼得
2 ........ 100200 ....... 02 ............... 138 ............. 12 .. ....................彼得
3 ........ 100300 ....... 07 ............... 112 ............. 26 .. ...................约翰

我应该为DiffDiametral写入RowSource或DataSource以获取这些值?如何避免第一行的错误,哪里不是我想要减去的先前值?

我试图根据这个链接解决它: http://support.microsoft.com/kb/101081/en-us 但我没有解决它。简单地说,我不知道如何将Diameter的先前值引用到计算差异。

1 个答案:

答案 0 :(得分: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