【问题标题】:Dynamic Sequencing of data in MS Access ReportsMS Access 报告中数据的动态排序
【发布时间】:2013-01-29 01:45:00
【问题描述】:

所以,我有这份报告:

这个查询:

报告从查询中提取所有数据。 STA1、STA2、STA3 和 STA4 字段来自 Job Order 表,其中每个作业都有一个基于工作站(命名为 CU01、CU02、BR01...)的订单集。

我试图制作本质上说的宏

如果报告![生产路由器 LBPW]![工作站 1]="CU01" 则报告![生产路由器 LBPW]![运行时间 1]=查询![按 P/N 查询激光小时数]![总计激光小时]

如果我理解正确的话,类似这样的一系列语句基本上可以将每个工作站与特定类型的时间数据(切割、弯曲、插入和焊接)相关联,有效地重新排列我的字段以自动显示我想要的时间数据在我想要的地方。唉,我对宏的了解还不够,无法做到这一点,我对 VBA 的了解甚至更少。如果我可以填写几行代码或其他内容,这将使我能够完成此任务,我相信我可以从那里弄清楚。

【问题讨论】:

  • 如果我从另一个问题中理解了您的建议,我每次运行报告时都必须更改操作顺序以匹配该部分。它不允许更改操作顺序,数据将始终按照我在设置报告时告诉它被拉入的顺序拉入。简而言之,在我看来,您的建议会创建一个静态的操作序列,而无需在我每次运行具有不同操作序列的部件时修改报告。我希望报告上的顺序随着我执行操作的实际顺序而改变。
  • 部分问题是我对此知之甚少,无法更具体。我可以告诉你,切割时间、焊接时间、铆接时间和弯曲时间都是我试图从中提取的字段,我希望根据我可以设置的顺序对这些字段而不是记录重新排序对于每个部分,可能在另一个表中。
  • 我正在尝试用我目前拥有的图片来重写问题,但我不允许发布它,因为我在网站上没有足够的代表。我还需要 4 个。
  • 问题是我希望每次运行报告时对字段进行不同的排序。如果可能的话,我希望这种重新排序是自动化的。
  • 从您的图像中,您似乎想根据 ID 在位置 10、20、30 或 40 放置一个不同的字段,一种方法是使用别名,因此您可以代替 select weld, this, that ...select weld as Pos10, this as Pos20, that As pos30这里不可能继续,因为SO没有为对话设置,你还没有足够的声誉来聊天,你可以PM我lessthandot.com

标签: ms-access ms-access-2010


【解决方案1】:

一种方法是创建各种查询,例如:

查询CU01

SELECT [Cuttime] As Pos1, [Weldtime] As Pos2, [Rivettime] As Pos3, Bend As Pos4 
FROM JobOrder

您的报告将参考 Pos1,而不是 CutTime。标签也可以是文本框,因此它们也会自动更新,例如:

SELECT [Cuttime] As Pos1, "Cut" As lbl1, [Weldtime] As Pos2, "Weld" As lbl2
       [Rivettime] As Pos3, "Rivet" As lbl3, Bend As Pos4 "Bend" As lbl4
FROM JobOrder

您可以通过规范化表格来进一步简化。

任务表

Job   Action Time Machine SortOrder
 1    Cut    10   AB         3
 1    Bend    4   CD         1
 1    Rivet  30   EF         6

【讨论】:

  • 如果您想发布示例数据,可以给出更完整的答案。
  • 非常感谢您的帮助,但我找到了另一种我认为可以轻松工作的解决方案。完成后我会发布它。
  • 你是对的。我太忙于让逻辑去做,我忽略了重新安排我的时间表的可能性。问题是我所有的时间数据都在一条记录中。既然我按照你的建议把它分成了很多,那就容易多了。
【解决方案2】:

所以,我所做的是在我的查询中使用一系列 Switch 函数,以便拉入每个查询的数据通过逻辑语句插入到每个字段中。对于操作名,逻辑如下:

OP2: 开关([ST2]="PE01","Insert",[ST2]="PE02","Insert",[ST2]="BR01","Bend",[ST2]="BR02" ,"弯曲",[ST2]="WE01","自动焊接",[ST2]="WE02","MIG 焊接",[ST2]="WE03","TIG 焊接",True,"N/A ")

这基本上意味着,如果 ST2=PE01,则 OP2=插入,否则如果 ST2=BR01,则 OP2=弯曲...

然后我设置了另一个开关,显示 If OP2=Bend, Time2=BendTime... 以此类推。这样,每个字段都包含一个基于逻辑语句输入的值,并且作业的顺序由我在作业顺序表中输入站点名称时设置的顺序确定。

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多