- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 DSum 计算我需要的数字需要花费天文数字的时间。我的查询似乎每行大约需要 0.1 秒,它有 4300 行。这意味着每次我刷新数据库时,大约需要 8 分钟...
我在这里遇到了很多问题,但如果你继续,它应该是完全连贯的。也就是说,如果您知道如何使用这两个表从 A 到 B 以及我想要的输出,请随时帮助我。我在下面有一个工作方法,但正如我所说,它花费的时间太长了。
我从下面的两个表格开始。我想做的是从我的需求数量中减去我的现有数量,并将任何继续超出的数量滚动到下一个日期。但是,我不想前滚我所需的数量。
在手
Product | QTY
A | 125
必需(在本例中,我每月需要 50 个)
Product | QTY Req | Date Req
A | 50 | 1-1-18
A | 50 | 2-1-18
A | 50 | 3-1-18
A | 50 | 4-1-18
A | 50 | 5-1-18
A | 50 | 6-1-18
而且,这是我想要的输出:(在这个例子中,我在 3 个月内用完了我的手头数量,之后每月仍然需要 50 个。
Product | Build QTY | Date Req
A | 0 | 1-1-18
A | 0 | 2-1-18
A | 25 | 3-1-18
A | 50 | 4-1-18
A | 50 | 5-1-18
A | 50 | 6-1-18
为我的现有数量分配一个错误的日期(手动设置为在任何要求的日期之前)。这样我们就可以进行联合查询以合并所有供需数量。
手头摘要(新查询)
SELECT
DateValue("12/1/2017") AS [Date],
[On Hand].[Product],
[On Hand].[QTY];
进行联合查询,以便我们可以获得所有日期↔产品组合。
uQuery(新查询)
SELECT
[On Hand Summary].[Date] AS [Date],
[On Hand Summary].[Product] AS [Product]
FROM [On Hand Summary]
UNION SELECT
[Required].[Date Req] AS [Date],
[Required].[Product] AS [Product]
FROM [Required];
按产品和日期合并数量。在这里,我将现有数量乘以 -1,以便我们可以准备要前滚的数量。
我还将我的数量包装在 Iif(IsNull())
中,这样我就可以用 0 替换空值。
Data Consolidation 1(新查询)
SELECT
[uQuery].Date,
[uQuery].Product,
IIf(IsNull(-1*[On Hand Summary]![QTY]),0,-1*[OH Summary]![QTY]) AS [OH QTY],
IIf(IsNull([Required]![QTY Req]),0,[Required]![QTY Req]) AS [Req QTY],
[OH QTY]+[Req QTY] AS [Combined QTY]
FROM ([uQuery]
LEFT JOIN [On Hand Summary] ON
([uQuery].Product = [On Hand Summary].Product) AND
([uQuery].Date = [On Hand Summary].Date))
LEFT JOIN Forecast ON
([uQuery].Product = Required.Product) AND
([uQuery].Date = Required.[Date Req]);
在这个查询中,我从第一个 Data Consolidation 查询中提取了 Product
、Date
和 Combined QTY
,并添加了一个 卷数
列。
Data Consolidation 2(新查询)
Product | Date | Combined QTY | Roll QTY
A | 12-1-17 | -125 | -125
A | 1-1-18 | 50 | -75
A | 2-1-18 | 50 | -25
A | 3-1-18 | 50 | 25
A | 4-1-18 | 50 | 75
A | 5-1-18 | 50 | 125
A | 6-1-18 | 50 | 175
对于Roll QTY
,我使用这个表达式:
Roll QTY: DSum("[QTY]","Data Consolidation 2","[Data Consolidation 1]![Product] = '" & [Product] & "' And [Data Consolidation 1]![Date] <= #" & [Date] & "#")
现在,这给了我我需要的东西,但正如我所说,每行大约需要 0.1 秒。跨越 4300 行(只会变得更大),这是无法接受的计算时间。
这部分我不需要帮助;我知道我需要做什么。但如果你想知道我将如何获得我想要的输出,我只是想包括这个。
我计划创建一个计算以下内容的最后一个查询
Minimum([Combined QTY], Maximum([Roll QTY],0))
这些是我理解的传统max
和min
函数I'll need to implement a VB module .
我重新格式化了我的一些数据库,但我想我让它变得更简单了。我设法只制作了一个输入表,其中“现有”数量表示为负值。
Product | QTY Req | Date Req
A | -125 | 12-1-18
A | 50 | 1-1-18
A | 50 | 2-1-18
A | 50 | 3-1-18
A | 50 | 4-1-18
A | 50 | 5-1-18
A | 50 | 6-1-18
有没有办法在不使用 DSUM 的情况下将其向前推进?
确认一下,最终值不能小于0,不能大于月数。
最佳答案
以下查询在子查询中计算运行总和,然后在外部查询中加入手头数量,并进行比较并返回结果,如我的评论中所述。
SELECT
rs.Product,
SWITCH(
RunningSum - h.[QTY] < 0, 0,
RunningSum - h.[QTY] < rs.[QTY Req], rs.[QTY Req] - (RunningSum - h.[QTY]),
TRUE, rs.[QTY Req]
) AS [Build QTY],
rs.[Date Req], RunningSum
FROM
(SELECT
(
SELECT Sum(r.[QTY Req])
FROM [Required] r
WHERE r.[Date Req] <= o.[Date Req]
AND r.[Product] = o.[Product]
AND r.[QTY req] > 0
) AS RunningSum,
o.Product,
o.[QTY Req],
o.[Date Req]
FROM [Required] o
WHERE o.[QTY req] > 0) rs
LEFT JOIN (SELECT oh.[QTY req]*-1 As QTY, Product FROM [Required] oh WHERE oh.[QTY req] < 0) h ON h.[Product] = rs.[Product]
解释:
计算运行总和的子查询是下面的查询:
SELECT Sum([QTY Req])
FROM [Required] r
WHERE r.[Date Req] <= o.[Date Req]
AND r.[Product] = o.[Product]
AND r.[QTY req] > 0
r
和 o
是此查询中的别名。 r
是 required
的最内部实例 table 。 r
是该表的外部实例。对于外部实例中的每一行,我正在计算产品代码相同的所有前几天的总和。
你可以使用 DSum
而不是 SELECT Sum([QTY Req]) FROM [Required] r WHERE r.[Date Req] < o.[Date Req] AND r.[Product] = o.[Product]
,但这对性能有负面影响。
然后,在外部查询中,此子查询称为 rs
, 我加入了 On Hand
作为h
(在 H 上,我已经使用了 o
)并使用了我在评论中解释过的逻辑。
关于sql - Access 查询 : Running total without using DSum (or another approach all together)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997802/
我正在尝试编写 Access Access 数据库的脚本,以便在命令行上使用。 Access 数据库使用工作组文件进行保护。 Dim oApp, sWGF,myWS Set sApp = Create
我有一个包含数据表的表格。我希望用户能够选择多行,单击按钮并运行一些 sql 查询并对这些行执行一些工作。 查看我的 VBA 代码,我发现如何使用 CurrentRecord 属性 Access 最后
如果我在某个网络位置有 Microsoft Access 2007 数据库,那么可以使用该数据库的客户端计算机的数量是否有限制?客户端不会安装 Access,而是使用 Access Runtime 2
我正在开发一个注册系统。但我收到此错误:You tried to execute a query that does not include the specified expression.. 我正
我有一个产品设计为使用 MS Access 文件作为数据库的桌面产品。 现在,一些用户需要将它安装在几台 PC(比如说 2 或 3 台)上并共享数据库。 我想将 MS Access 文件放在共享文件夹
我接手了一个旧的软件项目,该项目使用 MS Access 数据库来存储数据。但是数据库不会在 Access 中打开,如下所示: "You do not have the necessary permi
我有一个文件夹,里面装满了 100 多个 Access97 文件。我需要将它们全部更新到 Access2003。 我可以手动完成,但使用 VBA 可能会快很多。 有没有人会有一个片段可以做到这一点?或
我正在通过 SQL Server 迁移助手 (SSMA) 将数据从 Access 数据库迁移到 SQL Server。 Access 应用程序将继续与转换为链接表的本地表一起使用。 一个连续的表单在加
我正在通过 SQL Server 迁移助手 (SSMA) 将数据从 Access 数据库迁移到 SQL Server。 Access 应用程序将继续与转换为链接表的本地表一起使用。 一个连续的表单在加
我的公司用 Visual Basic 6 开发了一个应用程序。 该应用程序通过 ODBC 数据源使用 Access 数据库。 Access 数据库是一个扩展名为“.mdb”的文件。 在以下环境中运行应
我一直在尝试让 Microsoft Access 从主 Access 窗口中“退出”,以便我可以隐藏 Access 窗口并仅在桌面上显示表单,以便可以轻松地将其放置在其他应用程序旁边。 起初我发现了一
我想在 access 2010 中使用 access 2000 和 2003 数据库。由于我不想检查一切是否手动工作,我正在寻找一种工具来分析 VBA 代码以查找使用 access 2010 发生的错
所以我有一个 Excel 工作簿,其中有一个很好的 shaperange 对象的全局 map 。通过一些非常简单的代码,我可以更改颜色、将国家/地区集合分组和取消分组为数组等......并且效果非常好
我们希望有大约 35-40 人通过共享驱动器上的脚本写入 Access 数据库。这些指标分解为他们需要每小时写大约 3-7 次。 Access 会支持这一点而不会对我产生影响吗? 是的,我很乐意将其用
我正在寻找一种使用 VBA 代码从外部数据库文件中删除 VBA 模块的方法。名为“myfile.accdb”的外部文件有一个名为“mod1”的模块,我希望能够在单独的项目中使用 VBA 代码删除该模块
我在 Access 2003 数据库(在 Access 2007 中开发)中有三个表单,它们处于父级 -> 子级 -> 孙子级关系中。在子窗体的 'Form_Load' 子窗体中,我设置了孙子窗体的一
MS Access 2007 存在拒绝在设计模式下显示表单的问题。我可以看到表单的代码(如果我查看显示表单的按钮的事件属性),但我看不到作为 GUI 布局的表单。而且,当我尝试从应用程序的主窗口调用此
我编写了代码,使用 Excel 中的下拉列表提供的标准将两个表连接起来,然后将数据返回到电子表格上的特定位置(工作表上已经有标题)。 这在我的机器上和其他机器上使用 MS Access 的机器上都可以
我正在开始构建一个应用程序,该应用程序从给定的根路径开始遍历文件夹结构,并将所有找到的 Access 1997 .mdb 文件转换为较新的 Access 2007/2010 .accdb 格式。但是,
我有一个表单和一个按钮。我想通过单击按钮打开另一个表单,并将参数从父表单传递到子表单(子表单的 RecordSource 有参数)。我该怎么做? 最佳答案 您可以通过引用表单的对象来引用调用表单的任何
我是一名优秀的程序员,十分优秀!