我正在尝试在MS Access中使用以前的句点值进行计算。我的方法是为我正在使用的每个变量创建第二个字段并移动表。
如果我的查询qry1是:
aa bb cc
--- --- ---
12 34 56
78 91 01
我的结果应该是:
aa0 bb0 cc0 aa1 bb1 cc1
---- ---- ---- ---- ---- ----
12 34 56 NULL NULL NULL
78 91 01 12 34 56
NULL NULL NULL 78 91 01
我遇到两个问题:
答案 0 :(得分:0)
您正在尝试使用Ms Access,就像使用Excel一样。使用Excel宏+公式可能更容易做到你想要的。
访问的强大之处在于它是一个SQL系统(这就是为什么你在加入时得到笛卡尔积的原因,这就是为什么)这听起来像你想要的那样可以用平面电子表格很容易地完成。如果想要自动化该部分,您可以编写VBA来为您添加行。
如果这没有用,那么可以更详细地描述你真正想要完成的事情。
编辑:
我错过了帖子中你说你正在使用以前的值进行计算的部分。这就是我在单个Access查询中实现的目的:
qry_Data: (based on tbl_Data)
id aa bb cc calc
--- --- --- --- ---
01 12 34 56 =Dlookup("aa","tbl_Data","id = " & [id] - 1)
02 78 91 01 =Dlookup("aa","tbl_Data","id = " & [id] - 1)
作为正常操作的一部分,不应向表中添加列。应设置访问表以保存他们将需要的所有数据(直到您的模型更改)。如果您正在设计访问操作并且它似乎应该添加列,那么您应该添加链接表或使用计算字段。在上面的例子中,字段calc将等于ID#1小于当前记录的记录中的值“aa”。这仅在存在具有该ID#的记录时才有效,因此如果ID号中可能存在间隙,则不应使用此确切方法。由于您说该表是按特定的标准排序的,因此您可能需要使用不同的方法来确定以前的记录。在VBA中实现这一点的一种方法是:
Dim RS as Recordset
Set RS = CurrentDB.QueryDefs("myQuery")
RS.MoveLast
RS.MovePrevious
此时您处于倒数第二个记录,可以使用以下命令访问该记录中的任何值:
RS.Fields("aa")
如果您不确切知道自己要做什么,我就无法提出更具体的建议,除非您熟悉基本的SQL概念,并且您会发现在Access中工作更容易。