导出数据到DataTable
你可以打开CaseStudy目录下的文件“甘特图非绑定状态.Table”,参考其中的窗口“甘特图”
本节的任务是将甘特图的数据输出到DataTable。
我们首先设计了四个表,用于接收甘特图数据,这四个表的结构为:
任务表
任务ID ---->
整数
任务名 ----> 字符型
类型 ----> 整数
摘要 ----> 逻辑型
开始日期 ----> 日期型
结束日期 ----> 日期型
持续天数 ----> 整数
完成百分比 ----> 双精度小数
父任务ID ----> 整数
前驱任务表
任务ID ---->
整数
任务名称 ----> 字符型
前驱任务ID ----> 整数
前驱任务名称 ----> 字符型
前驱类型 ----> 整数
延迟天数 ----> 整数
资源定义表
资源ID ---->
整数
资源名称 ----> 字符型
资源类型 ----> 整数
计量单位 ----> 字符型
单位成本 ----> 双精度小数
资源分配表
任务ID ---->
整数
任务名称 ----> 字符型
资源ID ----> 整数
资源名称 ----> 字符型
资源用量 ----> 双精度小数
资源单价 ----> 双精度小数
资源成本 ----> 双精度小数 ---->
[资源用量] * [资源单价]
在甘特窗口中,有个“导出数据”的按钮,其代码为:
Dim
gv
As
GanttView = e.Form.Controls("GanttView1").GanttView
DataTables("任务").DataRows.Clear()
DataTables("前驱任务").DataRows.Clear
DataTables("资源分配").DataRows.Clear
DataTables("资源定义").DataRows.Clear
For
Each
rs
As
Gantt.Resource
In
gv.Resources
'变量资源定义
Dim
dr
As
DataRow = DataTables("资源定义").AddNew()
dr("资源ID")
= rs.ID
dr("资源名称")
= rs.Name
dr("资源类型")
= rs.ResourceType
dr("计量单位")
= rs.UnitOfMeasure
dr("单位成本")
= rs.Cost
Next
For
Each
tk
As
Gantt.Task
In
gv.Tasks
'变量全部任务
Dim
tr
As
DataRow = DataTables("任务").AddNew()
tr("任务ID")
= tk.ID
tr("任务名")
= tk.Name
tr("类型")
= tk.Mode
tr("摘要")
= tk.Summary
tr("开始日期")
= tk.Start
tr("结束日期")
= tk.Finish
tr("持续天数")
= tk.Duration
tr("完成百分比")
= tk.PercentComplete
tr("父任务ID")
= tk.OutlineParentID
'也就是所属摘要任务的ID
For
Each
pk
As
Gantt.Predecessor
In
tk.Predecessors
'遍历这个任务的前驱任务
Dim
pr
As
DataRow = DataTables("前驱任务").AddNew()
pr("任务ID")
= tk.ID
pr("任务名称")
= tk.Name
pr("前驱任务ID")
= pk.PredecessorTaskID
pr("前驱任务名称")
= pk.PredecessorTask.Name
pr("前驱类型")
= pk.PredecessorType
pr("延迟天数")
= pk.Lag
Next
For
Each
rs
As
Gantt.ResourceRef
In
tk.ResourceRefs
'遍历这个任务用到的资源
Dim
zr
As
DataRow = DataTables("资源分配").AddNew()
zr("任务ID")
= tk.ID
zr("任务名称")
= tk.Name
zr("资源ID")
= rs.ResourceID
zr("资源名称")
= rs.Resource.Name
zr("资源用量")
= rs.Amount
zr("资源单价")
= rs.Resource.Cost
Next
Next