Ms access 如何在MS Access中移动和复制行?

Ms access 如何在MS Access中移动和复制行?,ms-access,Ms Access,我试图在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 NUL

我试图在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
我遇到两个问题:

  • 我尝试在两个额外的查询中添加顶部和底部的空行,但不知何故,行丢失了
  • 当我使用JOIN组合这两个查询时,我得到一个笛卡尔积,即行不是并排的

  • 您正试图像使用Excel一样使用Ms Access。使用Excel宏+公式可以更轻松地完成所需操作

    access的强大之处在于它是一个SQL系统(这就是为什么当你加入时会得到笛卡尔乘积的原因,这就是想法)。听起来你想要的东西可以很容易地用一个平面的电子表格来完成。如果希望自动化该部分,可以编写VBA来为您添加行

    如果这没有帮助,那么可以更详细地描述你真正想要完成的事情

    编辑:

    我错过了你的帖子中的那部分,你说你正在使用以前的值进行计算。这就是我如何在单个访问查询中实现这一点的方法:

    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)
    
    不应将列添加到表中作为正常操作的一部分。应设置访问表以保存它们需要保存的所有数据(直到模型更改)。如果您在access中设计一个操作,并且它似乎应该添加列,那么您应该添加一个链接表或使用一个计算字段。在上面的示例中,字段calc将等于ID小于当前记录的记录中的值“aa”。只有当有一条记录的ID为#时,此方法才有效,因此,如果ID号可能存在差异,则不应使用此确切方法。因为您说过表是按特定的临界值排序的,所以您可能需要使用不同的方法来确定以前的记录。在VBA中执行此操作的一种方法如下:

    Dim RS as Recordset
    Set RS = CurrentDB.QueryDefs("myQuery")
    RS.MoveLast
    RS.MovePrevious
    
    此时,您位于倒数第二条记录上,可以通过以下方式访问该记录中的任何值:

    RS.Fields("aa")
    

    如果不知道您想做什么,我无法提出任何更具体的建议,除非您熟悉基本的SQL概念,并且会发现在Access中工作更容易

    您必须具有可排序的唯一密钥。如果不是,则无法确定“上一条”记录。qry1根据某些标准进行排序,因此,我是否需要向两侧添加一个键?如果这些条件是唯一的,则不需要。最简单的解决方案可能是使用
    MoveNext
    在VBA中自上而下循环记录集,在移动到下一条记录之前,在其中存储当前记录的数据。。。或者简单地打开一个记录集的克隆,向下移动这一条记录,然后再向下移动两条记录集进行计算。您应该发布表结构并解释“句点”代表什么。数据是通过表格输入的吗?谢谢Henry,这很好地描述了它。我想走这条路的原因是在另一个查询中使用这个表中的一些结果。留在Access中会有很多好处,但这似乎很难处理。好吧,你有两个选择。您可以链接excel电子表格,以便Access将其用作表格,然后通过使用VBA操作excel中的数据来进行转换,但实际上,最好重新思考您正在尝试执行的操作。您应该将access表看作是一组包含特定数据的记录,而不是电子表格。“向下”和“向右”只是在数据表中显示数据并按特定顺序排序时才有意义的概念。您描述的操作将向表中添加新字段。我更新了我的答案,并介绍了如何执行此操作的更多想法。