临时表生成器

DataTableBuilder类型是专为创建临时表而提供,定义DataTableBuilder变量的语法是: 

New DataTableBuilder(Name)
New DataTableBuilder(Name, Caption) 

Name:    临时表名称
Caption: 临时表标题 

DataTableBuilder类型有一个AddDef方法,用于定义新增列的属性,可以一次性的指定新增列的名称、类型、标题、长度、表达式,AddDef的语法有六种,非常灵活:

AddDef(Name, Type)
AddDef(Name, Type, Expression)
AddDef(Name, Type, Expression,Caption)
AddDef(Name, Type, MaxLength)
AddDef(Name, Type, MaxLength,Expression)
AddDef(Name, Type, MaxLength,Expression,Caption) 

Name:        字符型,指定列的名称
Type:        Type类型,指定列的类型,用GetType函数获得指定的类型,例如:GetType(String),表示字符型
MaxLength:   整数型,指定字符列的长度
Expression: 字符型,指定计算表达式
Caption:     字符型,指定列标题

用AddDef方法添加所有列的定义后,最后用Build方法生成临时表。 

示例一

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("产品", GetType(String), 32)
dtb.AddDef("客户", GetType(String), 32)
dtb.AddDef("数量", GetType(Integer))
dtb.AddDef("金额", GetType(Double))
dtb.Build()
MainTable
= Tables("统计")

上述的代码增加了一个名为统计表的临时表,该表包括四列: 

产品:字符型,长度为32
客户:字符型,长度为32
数量:整数型
金额:双精度小数型

用代码生成的临时表,在关闭项目后,将不复存在。

示例二

假定表A的结构如下:

希望将其转换为表B,结构为:

转换代码为:

Dim dtb As New DataTableBuilder("B")
dtb.AddDef(
"姓名", Gettype(String), 32)
For Each
v As String In DataTables("A").GetValues("课程")
   
dtb.AddDef(v, Gettype(Double))
Next

dtb.Build()

For Each
v As String In DataTables("A").GetValues("姓名")
   
Dim dr1 As DataRow = DataTables("B").AddNew()
    dr1(
"姓名") = v
   
For Each dr2 As DataRow In DataTables("A").DataRows
       
If dr2("姓名") = v Then
            dr1(dr2(
"课程")) = dr2("分数")
       
End If
   
Next
Next
MainTable = Tables(
"表B")

 

更多的转换示例,可以参考:水平表和垂直表的转换


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