以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  从表中数据生成甘特图,可以不?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=54098)

--  作者:hjcslr
--  发布时间:2014/7/22 0:05:00
--  从表中数据生成甘特图,可以不?
从表A中的数据生成甘特图,可以不?如何操作?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.foxdb



--  作者:Bin
--  发布时间:2014/7/22 8:44:00
--  
没有结束时间的列要怎么处理?
--  作者:Bin
--  发布时间:2014/7/22 8:45:00
--  
甘特图不难,参考帮助http://www.foxtable.com/help/topics/2032.htm
--  作者:hjcslr
--  发布时间:2014/7/22 22:55:00
--  
有3个问题:
1、多个时间段可不可以?
2、时间段可以在数据表中提取可以不?
3、能不能自动生成多人任务栏?

--  作者:有点甜
--  发布时间:2014/7/22 22:58:00
--  

1、一个任务,可以对应多个时段,例子里有体现了;

 

2、时间段可以从数据表中提取,关键是你获取到表数据,设置进去即可;

 

3、多人任务栏,是什么意思?


--  作者:hjcslr
--  发布时间:2014/7/22 23:09:00
--  
打错了,根据表中列自动生成多个任务
--  作者:有点甜
--  发布时间:2014/7/22 23:13:00
--  
以下是引用hjcslr在2014-7-22 23:09:00的发言:
打错了,根据表中列自动生成多个任务

 

你给的例子,哪些列作为任务,哪些列是时间段?怎么得到任务?


--  作者:hjcslr
--  发布时间:2014/7/22 23:18:00
--  
药品为任务
开始时间和结束时间
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.foxdb



--  作者:hjcslr
--  发布时间:2014/7/23 0:11:00
--  
用下列可以提取任务,但是开始时间和结束时间不对,不太明白错在那里

Dim Chart As WinForm.Chart
Chart= Forms("窗口1").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 = #01/01/2010# \'设置Y轴的起始日期
Chart.AxisY.MaxDate = #04/30/2010# \'设置Y轴的终止日期
Chart.AxisX.GridMajorVisible = False \'隐藏X轴的网格线
Dim Customers As List(Of String)    \'提取药品中不重复值
Customers = DataTables("表A").GetValues("药品") 
For Each Customer As String In Customers  \'
\'定义数组集合的时候,要在类型后加上括号,表示这是一个数组集合.
Dim Arys As List(Of String()) 
Arys = DataTables("表A").GetValues("开始时间|结束时间","药品 = \'" & Customer & "\'") \'列名用符号|分割
\'注意循环变量是字符型数组,所以类型是String(),而不是String
For Each Ary As String() In Arys
With Chart.SeriesList
 
    .AddGanttSeries(Customer,Ary(0),Ary(1))
    .AddGanttLabels("M月d日")

End With
Next
 Next

--  作者:有点甜
--  发布时间:2014/7/23 10:18:00
--  

图片点击可在新窗口打开查看 汗......一开始看错了,以为要动态编译,后来发觉参数原来只是两个数组调用错了......

 

Dim Chart As WinForm.Chart
Chart= Forms("窗口1").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("表A").Compute("min(开始时间)") \'设置Y轴的起始日期
Chart.AxisY.MaxDate = DataTables("表A").Compute("max(结束时间)") \'设置Y轴的终止日期
Chart.AxisX.GridMajorVisible = False \'隐藏X轴的网格线
Dim Customers As List(Of String)    \'提取药品中不重复值
Customers = DataTables("表A").GetValues("药品", "结束时间 is not null")
For Each Customer As String In Customers  \'
    Dim drs As List(Of DataRow) = DataTables("表A").Select("药品 = \'" & 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