ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5632|回复: 7

[求助] ACCESS关于多表查询得到的进出库明细及库存查询疑问

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-6-12 11:36 | 显示全部楼层 |阅读模式
各位好,

本人刚学ACCESS,小白。要做一个多表联合查询,想要的结果是得到一个货物进出明细及库存的查询。特殊之处:每样货品有且只有一个。
遇到了一个问题:

“库存”列可否在设计视图手工加入?
“库存”列的判断大概是这样,货物如果有实际发运日期了则就不在库存,另一种情况是货物临时出去了没回来也不在库存,但当它返回了仓库时则是库存了。以下条件不知是否已写全?

如果“实际入库时间”空白,则“库存”为“NO”;
否则,当”实际发运日期“空白,或者”临时发运日期“空白时,则”库存“为”YES“;
否则,当”回仓库日期“大于”临时发运日期“时,”库存“为”YES“;

望各位前辈指正,谢谢!

Database1.zip

49.55 KB, 下载次数: 54

TA的精华主题

TA的得分主题

发表于 2015-6-12 14:48 | 显示全部楼层
1、这些表基本可以放在同一张表上,把日期设置为字段即可。
2、如果是查询,就不可能是手动录入(函数除外)。
  1. SELECT 预计入库通知.[ID Number], 预计入库通知.[VS Number], 预计入库通知.Model, 预计入库通知.[Ess Number], 预计入库通知.[Vessel Name], 预计入库通知.[Bill of Lading], 预计入库通知.ETA, 实际卸货时间.Date, 实际入库时间.[IN], 发货通知.要求发运日期, 实际发货时间.实际发运日期, 临时发运日期.临时发运日期, 返回日期.回仓库日期, IIf(([回仓库日期]>[临时发运日期])*(Not IsNull([回仓库日期])),"YES",IIf(IsNull([临时发运日期])*IsNull([实际发货时间]![实际发运日期])*IsNull([回仓库日期]),"YES","NO")) AS 库存
  2. FROM (((((预计入库通知 LEFT JOIN 实际卸货时间 ON 预计入库通知.[ID Number] = 实际卸货时间.[ID Number]) LEFT JOIN 实际入库时间 ON 实际卸货时间.[ID Number] = 实际入库时间.[ID Number]) LEFT JOIN 发货通知 ON 实际入库时间.[ID Number] = 发货通知.[ID Number]) LEFT JOIN 实际发货时间 ON 发货通知.[ID Number] = 实际发货时间.[ID Number]) LEFT JOIN 临时发运日期 ON 预计入库通知.[ID Number] = 临时发运日期.[ID Number]) LEFT JOIN 返回日期 ON 预计入库通知.[ID Number] = 返回日期.[ID Number];
复制代码

Database1.zip (25.25 KB, 下载次数: 233)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-12 16:25 | 显示全部楼层
roych 发表于 2015-6-12 14:48
1、这些表基本可以放在同一张表上,把日期设置为字段即可。
2、如果是查询,就不可能是手动录入(函数除外 ...

roych前辈,非常感谢您的帮忙,我先下载来研究研究,由于我技术太弱了。
对于您说的问题还想请教一下:
1 由于我的数据一直累计的,可能有好几万条,基本表的数据我从别人的数据汇总而来,而且可能有些数据这个货品有了但那个货品没有,估计没办法弄在同一张表上,所以我才分开。而且因为这样,我可能会将基本表作为动态的数据链接导入ACCESS里,以希望它们自动链接。这样您觉得是否有效率可行点?
2 不能手动录入指的是哪一个?因为我还不太懂。
3 请问您的查询是查询设计和SQL同时用吗?我看到了拉线和SQL语句都有。
4 还有就是您的库存表达式的盘点怎么看得到?
还望您指点,谢谢!

TA的精华主题

TA的得分主题

发表于 2015-6-13 11:59 | 显示全部楼层
1、基础表是一定要有的。——我说的基础表是包含所有商品的表。这些应该可以从入库表或者采购清单里弄出来,毕竟不可能存在没有采购却可以出库的商品。这个表可以作为父表。后面的一切查询都以这个为基准。
2、一般来说,我习惯用链接表。只要不更改路径或者文件名等,就可以省去每次导入的麻烦,因为数据是动态更新的。不过前提是必须要保证数据格式不出问题。——其实,如果格式出问题,导入时也是要重新处理格式的,甚至可能无法导入。
3、大部分情况下,查询里是不能,就算能也不应该手动输入信息,否则很容易引起混乱。查询的目的主要在于建立起数据表的关系,将一些关注点提取出来进行分析汇总等等。即便是操作查询,也是有目的地清洗数据,而不是随意对数据进行增删改。数据的增删改应该在数据表中处理,——如果分发给用户使用,出于数据安全性的考虑,则应该在窗体中处理。
4、SQL代码只是贴出来方便某些膜拜SQL代码的人查看而已。事实上我是在设计模式下完成的。毕竟设计模式比较直观。——你也可以看到,里面并没有像这样嵌套的查询:select xx from (select xxx form xxx)
5、里面并没有盘点数据。
6、我想说的是,在完成一个数据库之前,一定先把流程搞清楚。——当然,也有没把流程搞清楚就开始设计数据库的,不过绝大多数往往在后期得推翻重来。至于有没有例外,我不知道,至少我没有遇见过例外情况。
一般来说,我建议使用倒推法:
需要完成这个功能,我需要哪几步。
然后把每一步分解出来,看看每一步需要哪几个数据表。
接着看看手头上有哪些表。哪些需要录入数据,哪些可以直接从外部链接过来,哪些可以通过生成表或者更新表得到。
最后设计表字段和查询。
絮絮叨叨说了这么多,希望能够对你有所帮助。
7、最后一点。这里玩Access的可能不多。如果希望得到更多的帮助,不妨考虑下Access中国(好吧,我又做广告了…找王站要推广费去{:soso_e113:}):

roych邀请您访问Office中国论坛/Access中国论坛
http://www.office-cn.net/?fromuser=roych

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-15 10:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
roych 发表于 2015-6-13 11:59
1、基础表是一定要有的。——我说的基础表是包含所有商品的表。这些应该可以从入库表或者采购清单里弄出来 ...

多谢前辈的详细指点,我会多了解虽然现在还有很多不懂的地方,希望能设计出一个属于自己的ACCESS。谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-15 11:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
roych 发表于 2015-6-13 11:59
1、基础表是一定要有的。——我说的基础表是包含所有商品的表。这些应该可以从入库表或者采购清单里弄出来 ...

前辈,我还想问问“库存”列是怎么得来的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-6-15 14:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
roych 发表于 2015-6-13 11:59
1、基础表是一定要有的。——我说的基础表是包含所有商品的表。这些应该可以从入库表或者采购清单里弄出来 ...

roych 老师,我在设计视图看到了你“库存”的公式了,但是测试时发现没有将入库日期的“IN”考虑在内,也就是说“IN”如果是空白的话,库存就应该为“NO'。我写了一个表达式,但总提示我有误,能帮我看看吗?

iif( (Not IsNull([实际发运日期])),"No",iif((Not IsNull([临时发运日期])*IsNull([回仓库日期])),"No",iif((Not IsNull([回仓库日期])*([临时发运日期])>[回仓库日期])),"No",iif(Not IsNull([IN]),"Yes","No"))

TA的精华主题

TA的得分主题

发表于 2015-6-16 12:02 | 显示全部楼层
Bettyexcel 发表于 2015-6-15 14:31
roych 老师,我在设计视图看到了你“库存”的公式了,但是测试时发现没有将入库日期的“IN”考虑在内,也 ...

你最好先把逻辑表达式学习下再像我这样写,否则还是按部就班的一个个嵌套吧。

*运算符:表示AND
+运算符:表示OR

而且跟Excel类似,IIF只能嵌套7层。

最后把流程弄清楚
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 23:56 , Processed in 0.048477 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表