以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求教生成甘特图  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88412)

--  作者:yiwente
--  发布时间:2016/8/2 11:54:00
--  求教生成甘特图
 

请大侠帮我编写一段代码:

1、我按人员筛选后,将某人参与的设计项都筛选出来,但此人有的项目只参与3D设计,有的项目只参与2D设计,有的项目3D、2D都参与;

2、现在我想根据生成此人的3D、2D设计的开始时间、结束时间生成甘特图,审核时间计划不管它;

其中1我已完成,第2点代码有问题,不知如何解决,请高手帮忙,现行谢过!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:设计计划.table


--  作者:blackzhu
--  发布时间:2016/8/2 12:01:00
--  
Forms("设计计划甘特图").Show()
Dim Chart As WinForm.Chart
Chart= Forms("设计计划甘特图").Controls("Chart1")
Chart.ChartType = ChartTypeEnum.Gantt \'图表类型为甘特图
Chart.SeriesList.Clear
Dim t As Table = Tables("设计分配计划表")
Chart.Inverted = True \'对调X轴和Y轴位置
Chart.AxisY.DateType= True \'Y轴为日期型
Chart.AxisY.AnnoFormatString = "MM-dd" \'设置Y轴的标示格式\'
Chart.AxisX.GridMajorVisible = False \'隐藏X轴的网格线\\
With e.Form.Controls("设计人员")
    If .Value IsNot Nothing Then
        Dim drs As List(Of DataRow)
        drs = DataTables("设计分配计划表").Select("[设计3D_担当] = \'" & .Value & "\'  And [设计2D_担当] = \'" & .Value & "\'")
        For Each dr As DataRow In drs
            With Chart.SeriesList
                .AddGanttSeries(dr("治具规格"),New DateTime() {dr("设计3D_计划开始日期"),dr("设计2D_计划开始日期")},New DateTime() {dr("设计3D_计划结束日期"),dr("设计2D_计划结束日期")})
                .AddGanttLabels("M月d日")
            End With
        Next
    End If
End With

--  作者:yiwente
--  发布时间:2016/8/2 13:52:00
--  

谢谢老朱!

上面代码有两个问题:

1、当3D或3D设计的开始日期和结束日期是同一天,则甘特图上无显示;

2、当3D设计与2D设计不是同一人时,被筛选出的此人所参与的3D或2D设计甘特图上也无显示。

还请支招!


--  作者:Hyphen
--  发布时间:2016/8/2 14:17:00
--  
2楼的代码改这里

drs = DataTables("设计分配计划表").Select("[设计3D_担当] = \'" & .Value & "\'  Or [设计2D_担当] = \'" & .Value & "\'")

--  作者:blackzhu
--  发布时间:2016/8/2 15:38:00
--  
第二个问题,究竟是要显示同一个人还是不同一个人
--  作者:yiwente
--  发布时间:2016/8/2 16:07:00
--  
在甘特图上要只显示被筛选的人的工作,如一个项目3D设计是谢虎,2D设计是张兵,被筛选的是谢虎时,则谢虎的3D设计在甘特图上显示,而张兵的2D设计不显示
--  作者:yiwente
--  发布时间:2016/8/2 16:08:00
--  
第一个问题最难解决,版主能否帮帮忙?
--  作者:blackzhu
--  发布时间:2016/8/2 16:17:00
--  
那应该还是 AND 


Forms("设计计划甘特图").Show()
Dim Chart As WinForm.Chart
Chart= Forms("设计计划甘特图").Controls("Chart1")
Chart.ChartType = ChartTypeEnum.Gantt \'图表类型为甘特图
Chart.SeriesList.Clear
Dim t As Table = Tables("设计分配计划表")
Chart.Inverted = True \'对调X轴和Y轴位置
Chart.AxisY.DateType= True \'Y轴为日期型
Chart.AxisY.AnnoFormatString = "MM-dd" \'设置Y轴的标示格式\'
Chart.AxisX.GridMajorVisible = False \'隐藏X轴的网格线\\
With e.Form.Controls("设计人员")
    If .Value IsNot Nothing Then
        Dim drs As List(Of DataRow)
        drs = DataTables("设计分配计划表").Select("[设计3D_担当] = \'" & .Value & "\'  And [设计2D_担当] = \'" & .Value & "\'")
        For Each dr As DataRow In drs
            With Chart.SeriesList
                .AddGanttSeries(dr("治具规格"),New DateTime() {dr("设计3D_计划开始日期"),dr("设计3D_计划结束日期")},New DateTime() {dr("设计2D_计划开始日期"),dr("设计2D_计划结束日期")})
                .AddGanttLabels("M月d日")
            End With
        Next
    End If
End With


这样改了以后 所有的时间都会显示,但是重叠.这个不知道怎么改了?

--  作者:281512373
--  发布时间:2016/8/2 16:40:00
--  
学习一下
--  作者:yiwente
--  发布时间:2016/8/2 17:13:00
--  
烦请版主大人帮帮忙!