有关知识点
工作流讲究的是数据在用户之间高效流转,如果设计的时候,多多针对单行处理,会比处理整个表更加高效。
例如某行编辑完毕,需要保存此行以流转到下一流程,显然单单保存此行会比保存整个表快很多。
FoxTable的DataRow和Row均有以下方法,用于处理单行数据:
方法 | 说明 |
Save | 保存此行 |
Load | 重新加载此行 |
Reject | 撤销对此行的修改 |
Remove | 移除此行 |
通过DataRow或Row执行上述方法,效果是一样的,实际上通过Row执行上述方法的时候,调用的就是DataRow的同名方法。
同时为Row和DataRow提供这些方法,虽然有些冗余,但有利于简洁编码。
此外工作流还需要及时从后台加载待处理的数据,显然用追载的方法,将后台新增待处理数据追加到表中,比重新加载整个表要高效很多。
DataTable的AppendLoad方法用于追载数据,语法:
AppendLoad(Filter,Save)
Filter:字符型,用于设置追载条件。
Save: 可选参数,逻辑型,是否在追载数据前先保存现有数据,默认为True,既先保存后追载。
AppendLoad会返回一个集合,包含所有追载的行(DataRow)。
需要注意的是:
1、必须确保即将追载的行,并不存在于表中,也就是这些行之前并未加载,否则将报错。
2、AppendLoad适合追载少量数据,大量数据一般用Load重新加载。
示例:
假定甲、乙两个用户同时编辑表A,甲负责增加行,并输入部分列的数据,乙负责输入其它列的数据。
我们需要为乙用户设计一个按钮,用于将打开项目以来,甲用户新增加的行追载到表中,按钮的代码为:
Dim
id As Integer = DataTables("表A").Compute("Max(_Identify)")上述代码先计算出表A中"_Identify"列的最大值,然后从后台追载"_Identify"列的值大于此最大值的行,这些行就是甲用户新增加的行。
提示:甲用户新增行并输入数据后,必须保存,乙用户才可追载此新增加的行,这是因为AppendLoad是从后台追载的,如果新增行没有保存,后台就不存在此行, 乙用户也就谈不上追载了。