Access交流中心

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

怎样让图表控件的数据根据窗体查询的结果而变化?

gadget  发表于:2011-12-16 15:05:59  
复制

附件是我参考前辈的示例做的,在子窗体显示主窗体的多条件查询的结果,是数据表。
我需要同时在一个图表控件上显示窗体的多条件查询的结果,请各位帮忙看一下要怎么做。
我想把 负责人 作为系列字段, 数量 作为数据字段, 订购日期 作为分类字段(X轴)。
谢了先点击下载此附件

 

Top
叶海峰 发表于:2011-12-16 16:53:21
将一个交叉表查询的语句赋值给me.graph40.rowsource属性

gadget 发表于:2011-12-16 17:09:48
我做的是窗体的动态查询,需要图表控件会动态变化,应该要VBA的。请看一下我的附件。谢谢

叶海峰 发表于:2011-12-16 22:40:14

Private Sub cmd查询_Click()
    On Error GoTo Err_cmd查询_Click

    Dim strWhere As String  '定义条件字符串

    strWhere = ""    '设定初始值-空字符串

    '判断【书名】条件是否有输入的值
    If Not IsNull(Me.现时货号) Then
        '有输入
        strWhere = strWhere & "([现时货号] like '*" & Me.现时货号 & "*') AND "
    End If

    '判断【类别】条件是否有输入的值
    If Not IsNull(Me.货物名称) Then
        '有输入
        strWhere = strWhere & "([货物名称] like '" & Me.货物名称 & "') AND "
    End If

    '判断【客户姓名】条件是否有输入的值
    If Not IsNull(Me.系列) Then
        '有输入
        strWhere = strWhere & "([系列] like '*" & Me.系列 & "*') AND "
    End If

    '判断【业务员】条件是否有输入的值
    If Not IsNull(Me.负责人) Then
        '有输入
        strWhere = strWhere & "([负责人] like '" & Me.负责人 & "') AND "
    End If

    '判断【进书日期】条件是否有输入的值,由于有【办理开始日期】【办理截止日期】两个文本框
    '所以要分开来考虑
    If Not IsNull(Me.订购日期开始) Then
        '【进书日期开始】有输入
        strWhere = strWhere & "([订购日期] >= #" & Format(Me.订购日期开始, "yyyy-mm-dd") & "#) AND "
    End If
    If Not IsNull(Me.订购日期结束) Then
        '【进书日期截止】有输入
        strWhere = strWhere & "([订购日期] <= #" & Format(Me.订购日期结束, "yyyy-mm-dd") & "#) AND "
    End If

 

    '如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
    '要用LEFT函数截掉这5个字符。
    If Len(strWhere) > 0 Then
        '有输入条件
        strWhere = Left(strWhere, Len(strWhere) - 5)
    End If

    '先在立即窗口显示一下strWhere的值,代码调试完成后可以取消下一句
    Debug.Print strWhere

    '让子窗体应用窗体查询
    Me.[查询子窗体].Form.Filter = strWhere
    Me.[查询子窗体].Form.FilterOn = True

 

    Dim str As String
    str = Me.Graph40.RowSource
    If InStr(1, str, "where") < 1 Then
    str = Left(str, InStr(1, str, "group by") - 1) & " where " & strwhere& " " & Mid(str, InStr(1, str, "group by"))
    Else
    str = Left(str, InStr(1, str, "where") + 4) & strwhere & " " & Mid(str, InStr(1, str, "group by"))
    End If
    Me.Graph40.RowSource = str

Exit_cmd查询_Click:
    Exit Sub

Err_cmd查询_Click:
    MsgBox Err.Description
    Resume Exit_cmd查询_Click

End Sub



gadget 发表于:2011-12-17 11:20:41
非常感谢

gadget 发表于:2011-12-19 15:54:02
我修改了一下,加入了版主的代码,还是有些问题:

图表控件的X轴的值显示不完全,比如说有10,33,52,70等n个值,但是控件只会显示10,33这样一两个值,而且柱形变得很大。

我已经把 数据-列数 设置为99, 还是没有用,不知道这个控件怎么弄。

你代码里的 - 1 和 + 4 是怎么回事我也没有看懂。

请再看一下附件,谢谢。

btw,第四行代码提示错误,strwhere&的&前面要加个空格

点击下载此附件

叶海峰 发表于:2011-12-19 21:51:27
你自己查以下InStr函数的帮助,就知道为何要-1和+4了

gadget 发表于:2011-12-20 11:12:21

我能查到Left 函数和InStr 函数的说明,但是我不懂vba,我不会用。

究竟要怎么搞啊



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