MS Access - 在新表中记录查询的每日总计

时间:2015-10-09 11:49:28

标签: sql ms-access

我有一个ODBC数据库,我已经链接到Access表。我一直在使用Access来生成一些自定义查询/报告。

但是,这个ODBC数据库经常更改,我试图发现差异的来源。 (要完成数十万条记录,但我可以很容易地将其过滤到我关注的内容中)

现在我每天都在手动提取数据,导出到Excel,计算我想要跟踪的每个类别的总计,并登录另一个Excel文件。

如果可能的话,我宁愿在Access中实现自动化,但是还没有能够听到我的声音。

我已经链接了我关注的ODBC数据库,并且可以生成我想要生成的查询。

我正在努力解决的问题是如何每天捕获这些数据,然后记录下这一数据,以便我可以在给定的时间段内对其进行趋势分析。

如果数据是恒定的,那么我很容易理解/做。但是,数据可能每天都在变化。

EX:这是工单的数据库。工单(基本上是我的主键)分配给不同的部门。单个工单可以属于许多不同的部门,并且具有与之关联的多个任务/保持/操作。

工作订单0237153-03今天可以分配到A部门,但明天可以重新分配到B部门。

这些工作单也有"排名代码"例如优先级A,B,C。这些也可以在任何给定时间更改。今天工作订单0237153-03可能是优先级A,但明天有人可能会认为它实际上应该是优先级B.

这就是为什么我想每天捕获所有可用数据(隔夜进入的新工作订单,以及可能对其进行更改的所有旧工作订单),计算不同字段的总数I& #39;关注,然后记录这些数据。

然后每天重复一次。

1 个答案:

答案 0 :(得分:0)

你问的问题很模糊,所以这里是一般答案。

您正在计算从数据库表中获取的项目。

可能您不需要每天实际计算它们,但如果数据库中的表存储了每天的所有数据,您只需创建一个查询来计算所有数据。表格中存储的每一天的表格。

你说得对,这是最好的。

您可能没有"记录另一个表中的计数"虽然。

您似乎是一个全新的访问权限,因此您可能会从这些链接视频编号为61,7 here以及视频7 here

的视频中受益。

这些将有助于或购买图书/使用网络资源。

PART2。

如果你不得不提交它,因为你无法让ODBC数据库使用触发器/数据宏来记录历史记录,你可以自己存储历史记录....但是你必须每天都这样做

0在第1天,将ODBC数据的完整副本作为YOURTABLE。添加字段" dump Number"并将其全部设置为1。 1.每天链接到ODBC数据。

  1. 从YOURTABLE加入到ODBC表中,找到所有已更改的记录(即只测试要监视的字段以及是否有任何更改的字段......)。

  2. 将这些已更改的记录附加到YOURTABLE,并为"转储号码为2"这必须一直增加!

  3. 您现在可以编写SQL以获取每个主键的最新记录。

     SELECT *  
      FROM Mytable
      WHERE 
      (
      SELECT PrimaryKeyFields, MAX(DumpNumber) AS MAXDumpNumber
      FROM Mytable
      GROUP BY  PrimaryKeyFields
      ) AS T1
      ON t1.PrimaryKeyFields = Mytable.PrimaryKeyFields 
         AND t1.MAXDumpNumber= Mytable.DumpNumber
    
  4. 您可以将最近的记录与之前的记录进行比较。 即获得先前的转储 请注意,这不会在abvoe SQL中起作用(除非您始终保留每条记录!)

    AND t1.MAXDumpNumber-1 = Mytable.DumpNumber
    

    使用类似的内容获取前一行:

     SELECT *  
      FROM Mytable
           INNER JOIN 
              (
              SELECT PrimaryKeyFields
                   , MAX(DumpNumber) AS MAXDumpNumber
              FROM Mytable
                   INNER JOIN 
                  (
                  SELECT PrimaryKeyFields
                       , MAX(DumpNumber) AS MAXDumpNumber
                  FROM Mytable
                  GROUP BY  PrimaryKeyFields
                  ) AS TabLatest 
                  ON TabLatest.PrimaryKeyFields = Mytable.PrimaryKeyFields 
                     AND 
                     TabLatest.MAXDumpNumber <> Mytable.DumpNumber   
                     -- Note that the  <> is VERY important
              GROUP BY  PrimaryKeyFields
              ) AS T1
              ON t1.PrimaryKeyFields = Mytable.PrimaryKeyFields 
                 AND t1.MAXDumpNumber= Mytable.DumpNumber   
    
  5. 创建4和5以及MS Access命名查询(或SS视图),然后像表一样对它们进行处理以进行比较。

  6. 确保您在PK字段和DumpNumber上创建了索引,并且它们应该是唯一的 - 这会加快速度....

    1. 及时完成圣诞节......并将此标记为答案!