If dt.HasChanges Then Output.Show(dt.Name) End If End If Next
AddNew
在DataTable中增加一行或多行,并返回所增加的第一行。 AddNew() AddNew(Count)
Count: 可选参数,要增加的行数,如果省略,则只增加一行。 例如:
Dim dr As DataRow
dr = DataTables(\订单\).AddNew()
dr(\日期\) = Date.Today '将新增行的日期设为当天日期。
其实我们很少直接向DataTable增加行,更多的时候,我们是向Table中增加行,原因以后会讲述。 Save 保存数据。 语法: Save() Save(Setting)
Setting: 可选参数,是否保存设置。 例如单单保存数据: DataTables(\订单\).Save() 同时保存数据和设置: DataTables(\订单\).Save(True) 保存设置比较耗时,会影响保存速度。 菜单中的保存命令是同时保存数据和设置的。
如果你学会了设计菜单或窗口,你可以自己设计一个保存按钮,将其代码设为:
For Each dt As DataTable In DataTables dt.Save() Next
这样单击这个按钮就能保存所有表,但是不会保存设置;对于一个成熟的、已经交付使用的项目,有时是没有必要保存设置的。
GetUniqueValues
从指定列中,获取不重复的值,以集合的形式返回。 语法:
GetUniqueValues(Filter, Col1, Col2, Col3....)
Filter: 条件表达式,请参考表达式的运算符和函数 和 条件表达式 Col1: 指定列名称,可以指定多列。
如果只从一列中提取不重复值,那么返回的是一个字符串集合;如果从多列中提取不重复值,那么返回的是一个字符串数组集合,数组的长度等于指定的列数。
在执行以下示例之前,请打开CaseStudy目录下的示例文件\统计演示.Table\。 示例一
列出1999年6月1日后订购过PD01产品的客户名单: Dim Customers As List(Of String)
Customers = DataTables(\订单\).GetUniqueValues(\产品]= 'PD01' And [日期] > #6/1/1999#\, \客户\)
For i As Integer = 0 To Customers.Count - 1 '其实用For Each好一点,这里只是顺便提供遍历集合的另一种用法。 Output.Show(Customers(i)) Next 示例二
Filter参数是不能省略的,如果希望无条件地返回值的集合,将Filter参数设置为\即可。 例如列出订单表中所有的客户名单: Dim Customers As List(Of String)
Customers = DataTables(\订单\).GetUniqueValues(\\客户\) For Each Customer As String In Customers Output.Show(Customer) Next
示例三
可以同时从多列提取不重复的值,此时返回的不是字符的集合,而是字符数组的集合。 例如从客户列和产品列提取不重复的值:
'定义数组集合的时候,要在类型后加上括号,表示这是一个数组集合。 Dim Arys As List(Of String())
Arys = DataTables(\订单\).GetUniqueValues(\\客户\产品\) '注意循环变量是字符型数组,所以类型是String(),而不是String For Each Ary As String() In Arys Output.Show(Ary(0) & \ & Ary(1)) Next
上面的代码是从客户和产品两列提取不重复的值,返回的不是一个字符集合,而是一个字符数组集合,每个数组包括两个元素,第一个元素是客户值,第二个元素是产品值。
GetComboListString
从指定的列中提取不重复的值,用符号\将这些值连接成一个字符串,并返回这个字符串。 此方法通常用于动态设置列表项目。 语法:
GetComboListString(ColumnName,Filter, Sort) ColumnName:列名称,从此列中提取不重复的值。
Filter: 可选参数,指定一个条件表达式,只返回符合此条件的值。
Sort: 可选参数,指定排序列,如果省略,则根据取值列排序,通常无需设置。
请参考表达式的运算符和函数 和 条件表达式 示例
Output.Show(DataTables(\订单\).GetComboListString(\产品\)) 也可以设置条件,例如从客户表中提取华北地区的客户名单: Dim s As String
s = DataTables(\客户\).GetComboListString(\客户名称\,\地区] = '华北'\) Output.Show(s)
Compute
根据条件统计表中数据。 语法:
Compute(Expression, Filter)
Expression: 要计算的表达式,使用聚合函数进行统计。
Filter: 可选参数,用于设置计算条件,请参考表达式的运算符和函数 和 条件表达式。 在执行以下示例之前,请打开CaseStudy目录下的示例文件\统计演示.Table\。 示例一
计算总的销售数量和金额: Dim Total As Integer Dim Amount As Double With DataTables(\订单\) Total = .Compute(\数量)\) Amount = .Compute(\金额)\) End With
Output.Show(\数量:\& Total) Output.Show(\金额:\& Amount) 示例二
计算产品PD01的销售数量: Dim Total As Long
Total = DataTables(\订单\).Compute(\数量)\, \产品 = 'PD01'\) Output.Show(Total) 示例三
计算每个客户的订购数量:
Dim dt As DataTable = DataTables(\订单\) Dim Total As Integer
Dim Customers As List(Of String)
Customers = dt.GetUniqueValues(\\客户\) For Each Customer As String In Customers
Total = dt.Compute(\数量)\, \客户] = '\ & Customer & \) Output.Show(Customer & \ & Total) Next
上述代码中,Filter参数分成了三部分,各部分用运算符&连接起来: \客户] = '\ & Customer & \
如果客户名称为CS01,那么三部分组合后,Filter参数就等于:
\客户] = 'CS01'\
通过代码动态合成条件表达式,是一种基本的技能,大家务必要掌握。 参考:GetUniqueValues
Find
在DataTable查找符合条件的行,如果找到的话,返回找到的行,否则返回Nothing。 如果有多个符合条件的行,默认返回第一个,也可以指定返回第几个符合条件的行。 语法:
Find(Filter,Sort,Index)
Filter: 条件表达式,请参考表达式的运算符和函数 和 条件表达式。 Sort: 可选参数,指定排序方式。
Index: 可选参数,指定返回第几个符合条件的行,0表示第一行。 示例一: Dim dr As DataRow
dr = DataTables(\产品\).Find(\产品编号 = '03'\) '找出编号为03的产品 With DataTables(\订单\)
dr = .Find(\产品 = 'PD01'\,\日期\) '找出第一次订购PD01产品的记录 dr = .Find(\产品 = 'PD01'\,\日期\,1) '找出第二次订购PD01产品的记录 End With 示例二:
有的时候,我们需要查找倒数第几行数据,例如最近一次订购某产品的记录。 可以参考下面的代码: Dim dr As DataRow With DataTables(\订单\)
dr = .Find(\产品 = 'PD01'\,\日期 Desc\) '找出最后一次订购PD01产品的记录 dr = .Find(\产品 = 'PD01'\,\日期 Desc\,1) '找出倒数第二次订购PD01产品的记录 End With
可以看到代码和原来几乎一样,唯一的变化是排序参数,被改为:日期 Desc
加上DESC使得日期按照降序排序,最后的日期排在最前面,我们所找出的第一条记录,就是最后一次订购产品PD01的记录。 示例三
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库foxtable编程(2)在线全文阅读。
相关推荐: