生产信息系统报表分析功能(一)

hi,手机边亲爱的你还好吗?

一直有人问,Access只是要一个型数据库,到底能做啥?除了比Excel能多存一些数据外感觉没有啥特点了,用来统计数据好像也没有Excel方便。Access本身是一个数据库,能存储的数据自然比Excel大,同时,协同工作也比Excel方便,只要合理运用还能做成一定体量的管理系统,类似ERP这样的大型系统也可以做到,而且学习开发的成本也比较低,那今天就给大家分享一个简单的生产信息的报表分析功能,接下去我会分几篇文章来给大家讲解的,希望讲完成后,大家能有所收获。好的,那让我们开始吧。

01、建表

 

第一步,我们还是和之前一样,先创建表,这里我们就不做系统的需求分析了,直接上手做了,大家注意,自己在开发系统时,还是需要先写相关的需求文档的。先建如下图一样的表,用来存放生产信息。

图片

可以自己先添加一些数据

图片

子窗体的数据源为一张临时表(TMP_Report),表结构如下图:

图片

同时我们再新增一个查询(qry_生产信息):

SQL语句如下:

 

SELECT ProductionID, ProductionDate, Department, Product, PlanningQty, FTGoodsQty, Nz([FTgoodsqty],0)+Nz([rework],0)+Nz([scrapqty],0) AS 生产总数量, Rework, ScrapQty, Recorder, RecordTimeFROM tbl_ProductionData;

02、创建窗体

创建如下图一样的窗体,一个主窗体,一个子窗体。注意,这里我们不在来创建新增、编辑这些功能了,我们主要是要来用来做数据的分析。

 

图片

 

03、添加查询按钮代码

 

我们的窗体上有如下图的三个条件,其中部门的组合框的行来源为:所有部门;生产部门A;生产部门B;生产部门C。行来源类型为:值列表。

图片

查询按钮的代码如下:

Private Sub cmd_Select_Click()
    On Error GoTo ErrorHandler
    Dim strSQL As String
    strWhere = ""
    If IsNull(Me.Department) And IsNull(Me.StratDate) And IsNull(Me.FinishDate) Then
        Exit Sub
    End If
    If Not IsNull(Me.Department) And Me.Department <> "所有部门" Then strWhere = strWhere & "Department='" & Me.Department & "' and "
    If Not IsNull(Me.StratDate) Then strWhere = strWhere & "ProductionDate>=#" & Me.StratDate & "# and "
    If Not IsNull(Me.FinishDate) Then strWhere = strWhere & "ProductionDate<=#" & Me.FinishDate & "# and "
    If Len(strWhere) > 0 Then
        strWhere = " where " & Left(strWhere, Len(strWhere) - 5)
   
    End If
   ' Debug.Print strWhere
    CurrentDb.Execute "delete * from TMP_Report"
    If Me.Department = "所有部门" Then
        strSQL = "insert into TMP_Report(ProductionDate,总数量,报废数量,合格率,一次通过率,报废率)" _
               & " select ProductionDate,sum(生产总数量) as 总数量,sum(ScrapQty) as 总报废数," _
               & " sum(FTGoodsQty+Rework)/sum(生产总数量) as 合格率,sum(FTGoodsQty)/sum(生产总数量) as 一次通过率," _
               & "sum(ScrapQty)/sum(生产总数量) as 报废率" _
               & " from qry_生产信息  " & strWhere & "group by ProductionDate"
    Else


        strSQL = "insert into TMP_Report(ProductionDate,Department,总数量,报废数量,合格率,一次通过率,报废率)" _
               & " select ProductionDate,Department,sum(生产总数量) as 总数量,sum(ScrapQty) as 总报废数," _
               & " sum(FTGoodsQty+Rework)/sum(生产总数量) as 合格率,sum(FTGoodsQty)/sum(生产总数量) as 一次通过率," _
               & "sum(ScrapQty)/sum(生产总数量) as 报废率" _
               & " from qry_生产信息  " & strWhere & "group by ProductionDate,Department"
    End If
    'Debug.Print strSQL
    CurrentDb.Execute strSQL
    If Me.Department = "所有部门" Then
        CurrentDb.Execute "update TMP_Report set Department='所有部门'"
    End If
    Me.frmChild.Form.Requery
ExitHere:
    Exit Sub
ErrorHandler:
    MsgBox Err.Description, vbCritical
    Resume ExitHere
End Sub

04、运行测试

最后,就是运行测试一下系统了。

 

图片

 

这里我用到了查询,用到临时表,我们为什么要这么做呢?下一篇文章来告诉大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Access开发易登软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值