以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]筛选后生成图表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121692)

--  作者:湛江智
--  发布时间:2018/7/11 17:22:00
--  [求助]筛选后生成图表

如下图,选择1个设计人员dad 点击筛选出dad的行后,筛选后生成(按钮)的代码求帮助

1、生成的图表只显示dad1个设计人员的图标

2、图表左边显示的字体是 项目子任务 


图片点击可在新窗口打开查看此主题相关图片如下:求助.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:我的甘特图.foxdb

[此贴子已经被作者于2018/7/11 17:30:28编辑过]

--  作者:有点甜
--  发布时间:2018/7/11 18:00:00
--  

Dim filter As String = "1=1"
With e.Form.Controls("设计人员")
    If .Value IsNot Nothing Then
        \'Tables("甘特图临时表").Filter = "[方案设计完成时间节点_负责人] = \'" & .Value & "\' Or [深化设计完成时间节点_负责人] = \'" & .Value & "\'"
        filter = "项目子任务负责人 = \'" & .Value & "\'"
    End If
End With
Dim Chart As WinForm.Chart
Chart= Forms("我的甘特图").Controls("Chart1")
Chart.ChartType = ChartTypeEnum.Gantt \'图表类型为甘特图
Chart.Inverted = True \'对调X轴和Y轴位置
Chart.AxisY.DateType= True \'Y轴为日期型
Chart.AxisY.AnnoFormatString = "MM-dd" \'设置Y轴的标示格式
Chart.AxisY.MinDate =  DataTables("甘特图临时表").Compute("min(项目子任务_计划开始日期)", filter) \'设置Y轴的起始日期
Chart.AxisY.MaxDate = DataTables("甘特图临时表").Compute("max(项目子任务_计划完成日期)", filter) \'设置Y轴的终止日期
Chart.AxisX.GridMajorVisible = False \'隐藏X轴的网格线

With e.Form.Controls("设计人员")
    Dim v As String = .Value
    If .Value IsNot Nothing Then
       
       
        Dim Customers As List(Of String)    \'提取药品中不重复值
        Customers = DataTables("甘特图临时表").GetValues("项目子任务", filter & " and 项目子任务_计划完成日期 Is not null")
        For Each Customer As String In Customers  \'
            Dim drs As List(Of DataRow) = DataTables("甘特图临时表").Select(filter & " and 项目子任务 = \'" & Customer & "\' and 项目子任务_计划完成日期 is not null") \'列名用符号|分割
           
            Dim dts1(drs.Count-1) As Datetime
            Dim dts2(drs.Count-1) As Datetime
           
            For i As Integer = 0 To drs.Count - 1
                Dim d1 As Date = drs(i)("项目子任务_计划开始日期")
                Dim d2 As Date = drs(i)("项目子任务_计划完成日期")
                Dim dt1 As Datetime = new Datetime(d1.Year, d1.Month, d1.Day, d1.Hour, d1.Minute, d1.Second)
                Dim dt2 As Datetime = new Datetime(d2.Year, d2.Month, d2.Day, d2.Hour, d2.Minute, d2.Second)
                dts1(i) = dt1
                dts2(i) = dt2
            Next
            With Chart.SeriesList
                .AddGanttSeries(Customer,dts1,dts2)
                .AddGanttLabels("M月d日")
            End With
        Next
    End If
End With

 

 


--  作者:湛江智
--  发布时间:2018/7/11 18:23:00
--  回复:(有点甜)Dim filter As String = "1=1"With e...

上面代码显示的是多个项目编号的图表

1、如果要实现二次筛选,比如不显示项目编号1807-0001广东,的图表,图表怎么实现呢?

2、怎样实现 项目子任务:项目1、项目2,右侧有多少个就显示多少个甘特图吗?方便直观查看

3、右边的图标怎么根据左边筛选出表的行,右侧生成甘特图呢?

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:我的甘特图22.foxdb


图片点击可在新窗口打开查看此主题相关图片如下:求助.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/7/11 18:32:41编辑过]

--  作者:有点甜
--  发布时间:2018/7/11 18:38:00
--  

1、看懂代码加上你自己的条件;

 

2、没看懂你的意思,你要做到什么效果?

 

3、筛选filter改成tables("表A").Filter