ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 进销存三表联合查询问题求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-6 23:34 | 显示全部楼层 |阅读模式
结存ACCESS不久,菜鸟一个。求助大神帮忙解决,谢谢您。
现有信息表,进、出共三个表。进出表格式相同。信息表单独格式。想联合查询后直接算出库存。联合查询SQL怎么写。谢谢!
1、一个编码要对应两种状态。2、数据关系类型用那种关系连接。

1.PNG
2.PNG
3.PNG
4.PNG

1234.rar

194.67 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2018-6-7 21:34 | 显示全部楼层
你需要先回答一个问题:入库和出库之间的唯一的对应字段(或者是多个字段)是什么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-7 23:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
siliconxu 发表于 2018-6-7 21:34
你需要先回答一个问题:入库和出库之间的唯一的对应字段(或者是多个字段)是什么?

您好,出入库之间唯一的字段是料号。一个料号需要对应新旧两种状态。只有料号是唯一的。谢谢!

TA的精华主题

TA的得分主题

发表于 2018-6-8 10:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你可以先把入库和出库的表各自进行汇总,然后使用料号把汇总后的两个表连接起来,再增加一列计算库存的字段;或者直接用DSum计算入库和出库的数量(条件使用料号),再相减。
还有一个方法是,把入库和出库设计成一个表就行了,然后增加一个字段来判断是出库还是入库。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-14 22:03 | 显示全部楼层
siliconxu 发表于 2018-6-8 10:33
你可以先把入库和出库的表各自进行汇总,然后使用料号把汇总后的两个表连接起来,再增加一列计算库存的字段 ...

您好,这个问题已经按你的思路解决了,谢谢!
另外有个问题帮忙看下怎么处理。1、现在是一个料号有两种状态,在出库窗体上显示各状态库存数,在出库的时候比对库存数量,目前只能比对新料库存,不知道怎么读取植球库存。2、有些物料只有新料,没有植球。这个怎么处理。3、或着是输入料号后,选择新料就比对新料库存,选择植球就比对植球库存。
库存比对:=DLookUp("库存","查询2","料号='" & [料号] & "'")
不知道怎么做。能否帮忙看下怎么做。谢谢!
捕获.PNG

1234.rar

165.59 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2018-6-15 11:36 | 显示全部楼层
假设你“料号”的文本控件名称是txt料号,你可以这么查询库存:
新料库存:=DLookUp("库存","查询2","料号='" & txt料号 & "' AND 状态='新料'")
植球库存:=DLookUp("库存","查询2","料号='" & txt料号 & "' AND 状态='植球'")

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-16 00:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 先生,别跑 于 2018-6-17 12:48 编辑
siliconxu 发表于 2018-6-15 11:36
假设你“料号”的文本控件名称是txt料号,你可以这么查询库存:
新料库存:=DLookUp("库存","查询2","料号 ...

您好,感谢您的解答,问题已经解决了。


TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-17 12:47 | 显示全部楼层
siliconxu 发表于 2018-6-15 11:36
假设你“料号”的文本控件名称是txt料号,你可以这么查询库存:
新料库存:=DLookUp("库存","查询2","料号 ...

您好,再请教你2个问题,
1、当一个料号只有一种状态的时候显示为空,想设置显示为0,附件的写法是可以实现,但不知道能不能这样写。
2、想在数量里写个时间,在出库时选择新料,出库数量就比对新料。选择旧料出库数就比对旧料。现在写的只比对新料,不比对旧料。能否帮忙看下是哪里问题更正下。谢谢!

1234.rar

178.02 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2018-6-19 17:47 | 显示全部楼层
1. 我不知道你说的是写在哪里的?是代码?还是窗体控件?
2. 同样不知道你说的是哪里。请指出是哪个窗体的哪个控件的哪个事件的代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-19 21:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
siliconxu 发表于 2018-6-19 17:47
1. 我不知道你说的是写在哪里的?是代码?还是窗体控件?
2. 同样不知道你说的是哪里。请指出是哪个窗体的 ...

您好,没描述清楚,不好意思。
1、目前有个别料号只有一种状态,新料或植球。想在出库窗体上料号文本框写个更新后事件,当输入料号后库存为空的显示为0,图1
以下写的是在窗体料号更新后事件。不知道这样写是否正确。目前使用没问题,
Private Sub 料号_AfterUpdate()
If Len(Me.料号.Text) <> 13 Then
        Cancel = True
        MsgBox "请输入13位数的正确料号!"
        Me.料号 = Null
         Me.料号.SetFocus
    End If
    If IsNull(Me.料号) Then
   Me.新料 = Null
   Me.植球 = Null
   Else
   Me.新料 = DLookup("库存", "查询2", "料号='" & [料号] & "' AND 状态='新料'")
    If IsNull(Me.新料) Then
   Me.新料 = 0
    End If
   Me.植球 = DLookup("库存", "查询2", "料号='" & [料号] & "' AND 状态='植球'")
    If IsNull(Me.新料) Then
   Me.新料 = 0
   End If
   End If
End Sub

2、想在出库窗体 数量 文本框写个更新后事件,在出库窗体上选择新料的时候出库数量与新料库存比对,选择植球时出库数量与植球库存比对。图2  、图3
以下写的都不对,出库数小于库存数也提示库存不足。不知道怎么写。麻烦帮忙更正或另外写个代码,谢谢
Private Sub 数量_AfterUpdate()
If IsNull(Me.数量) Then
Me.数量 = Null

Else

Val (Me.数量) > Me.新料
MsgBox "此物料库存不足。请重新输入数量!"
End If

If IsNull(Me.数量) Then
Me.数量 = Null

Else

  Val (Me.数量) > Me.植球
MsgBox "此物料库存不足。请重新输入数量!"
Me.数量 = Null
End If
End Sub

图3

图3

图1

图1

图2

图2
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 23:06 , Processed in 0.047213 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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