临时表生成器
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("统计")上述的代码增加了一个名为统计表的临时表,该表包括四列:
产品:字符型,长度为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")
更多的转换示例,可以参考:水平表和垂直表的转换