首页 > 其他分享 >ACCESS 查询物料进出明细时,计算并显示当时库存

ACCESS 查询物料进出明细时,计算并显示当时库存

时间:2023-08-24 16:26:21浏览次数:33  
标签:物料 明细 查询 ACCESS ID WHERE CustomerID SELECT 出库

效果如下图,[数量]字段上的负数为退货或者出库:

 

以下是入库单与出库单数据表里的数据:

 

 

 这里要用到一个临时查询,我随便取了个 "物料进出查询",词不达意,也懒得改了,大家不要介意

SELECT 入库单.产品ID, 入库单.入库数量 AS 数量,入库日期  as 日期 FROM 入库单
UNION ALL 
SELECT 出库单.产品ID, 出库单.出库数量*-1 AS 数量,出库日期  as 日期 FROM 出库单;

这里要注意,不要自作多情用括号把两个SELECT括起来,不然会报错.原因是ACCESS里面,不能把UNION/UNION ALL前后语句括起来.

数据展示如下

 接下来,我们给这个临时表插入一个[当时库存] 字段

SELECT T1.日期, T1.产品ID, T1.数量, 
(SELECT SUM(T2.数量) FROM 物料进出查询 AS T2 WHERE T2.产品ID = T1.产品ID AND T2.日期 <= T1.日期) AS 当时库存 FROM 物料进出查询 AS T1
ORDER BY 日期;

这里最好按日期排一下序,不然【当时库存】 会让人看起来感觉比较乱

我SQL水平比较菜,在这里陷入了一个误区,老想着用这个表联接它自己,各种INNER JOIN / LEFT JOIN / RIGHT JOIN 操作,结果都带有重复数据.后来想想,我目的只是增加一列 [当时库存],应该用子查询才对啊,这才扳正了方向.

如果要在VBA中调用这个查询并指定一个物料,就这么写:

CurrentDb.Execute " select * from 查询1 Where 产品ID=" & Textbox1.Value

这里顺便说说子查询:

在Access中,子查询是指在一个查询中嵌套了另一个查询。子查询可以用作  条件、 字段 或 来源表.子查询可以放在SELECT、FROM、WHERE或HAVING子句中。以下给出几个例子,方便大家理解

1.作为条件:
SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE OrderDate > #2023-01-01#)

    和用在WHERE中差不多,用在HAVING中的情况如下:
SELECT ProductID, SUM(SalesAmount) AS TotalSales
FROM Sales
GROUP BY ProductID
HAVING TotalSales > (SELECT AVG(TotalSales) FROM (SELECT ProductID, SUM(SalesAmount) AS TotalSales FROM Sales GROUP BY ProductID) AS SubQuery)

2.作为字段(文章上面的案例就是如此):
SELECT CustomerID, OrderCount = (SELECT COUNT(*) FROM Orders WHERE Orders.CustomerID = Customers.CustomerID) 
FROM Customers

3.作为来源表:
SELECT * FROM
(SELECT CustomerID, SUM(OrderAmount) AS TotalAmount FROM Orders GROUP BY CustomerID) AS SubQuery

子查询也是可以套娃的,比如这辆"三套车":

SELECT CustomerName
FROM Customers
WHERE CustomerID IN (
    SELECT CustomerID
    FROM Orders
    WHERE OrderID IN (
        SELECT OrderID
        FROM OrderDetails
        WHERE ProductID = 123
    )
)

 

标签:物料,明细,查询,ACCESS,ID,WHERE,CustomerID,SELECT,出库
From: https://www.cnblogs.com/yoooos/p/17654390.html

相关文章

  • 【GiraKoo】Android Studio编译时,提示java.nio.file.AccessDeniedException
    【问题解决】AndroidStudio编译时,提示java.nio.file.AccessDeniedException在使用AndroidStudio进行编译时,提示编译错误java.nio.file.AccessDeniedException。原因时当前使用Debug模式,停在断点上。导致编译程序无法替换被占用目标文件,输出该异常。【环境】AndroidStudio【......
  • DsReplicaGetInfo() failed with status 8453 (0x2105): Replication access was d
    Whenusingthe repadmin/showrepl commandtocheckreplicationhealthstatusonyourWindowsdomainenvironmentincommandpromptonSindowsServerendofresultyoumayseethefollowingerrormessage:DsReplicaGetInfo()failedwithstatus8453(0x2105):......
  • 【Oracle RAC Database】Single Client Access Name(SCAN)
    SCAN的作用是简化客户端连接数据库的配置,无论集群增加还是删除节点SCAN名称会一直保持不变,客户端不需要做任何的修改。SCAN是一个名称,通过DNS被解析成最多3个IP地址(SCANVIP)SCANVIP的作用是接收客户端连接,SCANVIP必须与集群的公网资源处于相同的子网,每一个SCANVIP都会有对应的S......
  • linux root用户密码输入正确还是提示access denied
    问题:之前用远程工具连接一直都是好的,第二天上班找开远程工具要输root的密码了,输入用户密码后还是无效,可以确定用户密码是对的,其中有一个远程工具一直是连着的就没有问题。排查问题:1、相接用passwd修改密码,无效2、查看用户是否被锁定,也没有锁3、因为在前一天晚上我删了liunx中/......
  • iwebsec-文件上传 05 .htaccess
    01、题目分析正常来讲应该先判断文件上传过滤是前端验证还是后端验证,但是这个地方因为是靶场,所以直接告诉你了是什么类型,因此就不用进行判断了,这里是.htaccess文件绕过,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们......
  • java.sql.SQLException: Access denied for user 'root'@'localhost' (using password
    场景:使用mybatis-plus和SpringBoot,用Druid连接,查询数据库时出现异常用户访问被拒绝java.sql.SQLException:Accessdeniedforuser'root'@'localhost'(usingpassword:YES)在application.yml中核对过用户名密码后发现连接数据库密码是正确的,问题出在哪儿呢?appliation.yml......
  • accesskey_tools:一款针对云环境的多功能利用脚本工具
    一、 关于accesskey_tools"accesskey_tools"是一个基于Python开发的多平台云环境利用辅助脚本。该工具可用于渗透测试中,因开发的不规范,以及一些其它漏洞,拿到泄漏AK/SK的情况下,测试人员可以直接利用这些凭证对云服务器进行测试,及时修复风险并采取相应措施,确保云环境中的敏感凭......
  • accesskey_tools:一款针对云环境的多功能利用脚本工具
    一、 关于accesskey_tools"accesskey_tools"是一个基于Python开发的多平台云环境利用辅助脚本。该工具可用于测试中,因开发的不规范,以及一些其它漏洞,拿到泄漏AK/SK的情况下,测试人员可以直接利用这些凭证对云服务器进行测试,及时修复风险并采取相应措施,确保云环境中的敏感凭证不......
  • Access denied for user 'root'@'localhost'
    一、概述在SpringBoot+MyBatis+MySQL环境搭建连接数据库。通过mvnspring-boot:run运行项目的时候出现的编译错误。Accessdeniedforuser'root'@'localhost'错误的原因是数据库连接的账号或者密码可能不对。如下图所示: 二、解决问题解决办法也很简单:......
  • ACCESS 说说组合框的应用
    在说应用之前,我觉得很有必要先讲讲组合框的一些常用属性:1.Dropdown:显示下拉菜单.这个属性可以在VBA下主动显示出来,但如果要隐藏它,只能通过转移焦点来达成.ComboObj.Dropdown2.AutoExpand:这是个布尔值,默认为True.一般会在Load事件中设置好.当用户输入的值与列表中......