导出数据到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

 


本页地址:http://www.foxtable.com/webhelp/topics/4032.htm