Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

日库存查询应怎样做?

Lee  发表于:2010-06-18 20:53:23  
复制

因工作需要财务要求仓库提供日库存数据,原以为象做实时库存一样小菜一碟,谁知不是那么回事,我自己试了一下遇到问题如下:

1.首先库存日期设置,既不能使用入仓日期也不能使用出仓日期,因不是入仓与进仓同日进行,选其中一个都会使生成的查询数据有问题。

2.库存=上日库存+入仓数量-出仓数量,这个表达式(估计是“库存”后面跟个SQL语句才行)在查询设计视图中如何写?

请问根据入库表和出库表(假设期初库存为0)怎样设计日库存查询?

点击下载此附件

 

Top
wj.s 发表于:2010-06-19 00:59:59

计算流水账式的日库存并不能通过简单的查询来解决,我的例子是通过两个临时表及多个查询反复统计数据达到目的。

不太喜欢直接的运用查询,把查询都转换成VBA代码了。

解决思路都做了标注。

你提供提供的数据库许多记录没有入仓日期,都更新为4-30后,数据才较为正常。

 

点击下载此附件

Lee 发表于:2010-06-19 11:25:31

谢谢WS.J,代码使用说明得很详细,连我这个菜鸟都大致能看懂,很易套用到实际数据库中。VB代码的优点是可一步到位,而查询(尤其ACCESS的查询设计视图)对VB代码不熟悉和初学ACCESS者(象我这类)来说是比较直观易懂的,而且比较容易设置条件对数据进行筛选。

在实际使用中我还遇到些问题(所以之前我说“套用”不是“应用”,因我水平还不够),麻烦帮手解决:

1.我在窗体查询中加多了一个查询条件“产品编号”的文本框,你原来的条件代码是:

If IsNull(Me.输入日期) Or Me.输入日期 = "" Then
MsgBox "请输入库存查询日期."
End If
GoTo Exit_Cmd_开始查询_Click

我想要的查询结果是:输入产品编号或日期两个条件之一也可进行查询;另外同时输入两个条件可进行精确查找。

请问代码要怎样修改?

2.我在查询窗体中加多了个“清除”按钮,用于清除查询条件并刷新子窗体(刷新后使字窗体数据不显示数据),代码这样写有问题吗:

Private Sub 清除_Click()
Me.输入日期 = Null
Me.产品编号 = Null
Me.子窗体_日库存查询.Requery
End Sub



赵文斌 发表于:2010-06-19 11:35:59

1.我在窗体查询中加多了一个查询条件“产品编号”的文本框,你原来的条件代码是:

If IsNull(Me.输入日期) Or Me.输入日期 = "" Then
MsgBox "请输入库存查询日期."
End If

给你思路不直接在示例上改了。如果不输入日期,实际日期条件为NOW()。虽然为空但实际是有条件的,在代码或查询中改一下条件即可。

 

2.我在查询窗体中加多了个“清除”按钮,用于清除查询条件并刷新子窗体(刷新后使字窗体数据不显示数据),代码这样写有问题吗:

Private Sub 清除_Click()
Me.输入日期 = Null
Me.产品编号 = Null
Me.子窗体_日库存查询.Requery
End Sub

有几种方法,看你的实际情况:

子窗体是用的临时表就直接删除后刷新;

另一种就是把子窗体上直接把可见设置为否;

把子窗体的数据源设一个为假的条件也就是此查询执行是查不到数据的。

 



wj.s 发表于:2010-06-19 15:24:40

第一个问题.

在[开始查询]按钮中的刷新子窗体代码前(Me.子窗体_日库存查询.Requery)加入如下代码.

    ' 检查文本[产品编号]有否输入
    If Not IsNull(Me.产品编号) Then
        ' 有输入则更改子窗体数据源,只显示符合文本[产品编号]条件的记录
        Me.子窗体_日库存查询.Form.RecordSource = "SELECT 日库存查询.* " & _
            "FROM 日库存查询 " & _
            "WHERE (((日库存查询.产品编号)= """ & Me.产品编号 & """));"
        Else
            ' 没有输入则显示全部记录记录
            Me.子窗体_日库存查询.Form.RecordSource = "SELECT 日库存查询.* " & _
                "FROM 日库存查询 " & _
                "ORDER BY 日库存查询.产品编号;"
    End If

这里偷了个懒,直接按条件修改子窗体的数据源,按道理应该是需要修改所有查询的条件的.(输入日期是一定要输入的,这是查询的基础)

第二个问题.

在Me.子窗体_日库存查询.Requery代码前最好清空[日库存查询]表,代码之前已经有了,拷贝下来即可



wj.s 发表于:2010-06-19 15:25:59
发上来才发现3楼已经答复你了,呵呵

Lee 发表于:2010-06-21 15:41:04

问题解决,谢谢两位耐心指导。



总记录:6篇  页次:1/1 9 1 :