办公自动化——数据查询及汇总分析

手机亲爱的你还好吗,我是失踪很久的edon。

之前给大家讲了一下生产信息报表怎么做,并且可以生成相应的excel文档,广大的网友给我私信说不能接着再讲一些相应的报表分析的例子,那今天我们就给大家来分享一个查询统计结合图表的示例。

我们大概要做这样的分析功能。

图片

我们先简单分析一下,我们需要做哪些东西,这个窗体上,我们需要放一个图表,一个数据表窗体,查看图表的同时,我们可以查看数据,选择条件的同时,图表与数据一起发生变化。接下去我们来实现这些操作。

01、建表

创建如下图一样的表,然后我往表中添加一些数据。

图片

02、创建子窗体

我们先创建一个数据表窗体。

图片

我先把子窗体的数据源设置为:

SELECT Year([销售日期]) & '-' & Format(DatePart('ww',[销售日期]),'00') AS 周期,
 产品名称, 产品类别,客户名称, Sum(销售数量) AS 销售数量之总计 FROM 销售信息表 
GROUP BY Year([销售日期]) & '-' & Format(DatePart('ww',[销售日期]),'00'), 产品名称, 产品类别, 客户名称; 

03、创建主窗体

如下图,我们创建一个主窗体,在主窗体中添加两个选项组控件,分别在两个选项组中添加单选按钮,接着添加一个选项卡控件,在选项卡中添加两个页,一个放图表控件,一个放子窗体控件。主窗体上控件比较多,大家要有耐心,一个一个排版好。

图片

注意:选择区间默认值填写3,这默认选择为月,图表的默认值为51,这样默认为柱形图

04、添加代码

接下我们来添加一下代码

Function 执行查询()
    Dim strWhere As String
    Dim strField As String
    Dim strFormat As String
    Dim strCaption As String

    Const xlCategory = 1    '在这里声明常量是为了去掉图表类型库的引用后代码也能正常运行

    Select Case Me.区间单位
    Case 1
        strCaption = "日"
        strField = "销售日期"
        strFormat = "yyyy-mm-dd"
    Case 2
        strCaption = "周"
        strField = "Year([销售日期]) & '-' & Format(DatePart('ww',[销售日期]),'00')"
        strFormat = "yyyy-mm"
    Case 3
        strCaption = "月"
        strField = "Format([销售日期],'yyyy-mm')"
        strFormat = "yyyy-mm"
    Case 4
        strCaption = "季"
        strField = "Year([销售日期]) & '-' & DatePart('q',[销售日期])"
        strFormat = "yyyy-mm"
    Case 5
        strCaption = "年"
        strField = "Year([销售日期])"
        strFormat = "0"
    End Select
    '设置子窗体中区间字段标题
    Me.子窗体!周期.Controls(0).Caption = strCaption
 '重置子窗体的数据源
    Me.子窗体.Form.RecordSource = " SELECT " & strField & " AS 周期,产品名称," _
                             & "   产品类别,客户名称,Sum(销售数量) AS 销售数量之总计" _
                             & " FROM 销售信息表" & strWhere _
                             & " GROUP BY " & strField & ",产品名称,产品类别,客户名称;"
 '重置图表的数据源
    Me.Graph.RowSource = " TRANSFORM Sum(销售数量) AS 销售数量之总计" _
                       & " SELECT " & strField & " AS 周期" _
                       & " FROM 销售信息表" & strWhere _
                       & " GROUP BY " & strField & "" _
                       & " PIVOT 客户名称"
    On Error Resume Next
    Me.Graph.Axes(xlCategory).TickLabels.NumberFormatLocal = strFormat
End Function


Private Sub Form_Load()
    Call 执行查询
End Sub

Private Sub 区间单位_AfterUpdate()
    Call 执行查询
End Sub

Private Sub 图表样式_AfterUpdate()
'选项按钮的选项值必须和下面常量的值对应
    Const xlColumnClustered = 51
    Const xlBarClustered = 57
    Const xlLine = 4
    Const xlColumnStacked = 52
    Const xl3DPieExploded = 70
    Const xlCylinderColClustered = 92
    Const xlRows = 1
    Const xlColumns = 2
    '更改图表样式
    Me.Graph.Object.ChartType = Me.图表样式
    '行列切换
    If Me.图表样式 = xl3DPieExploded Then
        Me.Graph.Object.Application.PlotBy = xlRows
    Else
        Me.Graph.Object.Application.PlotBy = xlColumns
    End If
End Sub

05、运行测试

最后,就是来运行测试了,我们来看一下效果

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Access开发易登软件

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

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

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

打赏作者

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

抵扣说明:

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

余额充值