善用SQLJoinTableBuilder
前面提到,DataTable和Table都有Fill方法,可以从另一个表加载数据。
Fill使用的是SQL语句,如果遇到较为复杂的需求,例如同时从多个表中提取列加载,普通用户可能无法应付。
不过不用担心,有了SQLJoinTableBuilder,不管多复杂的需求,都可以自动生成SQL语句供你调用。
假定有三个表:
希望从提取产品表的产品名称列、客户表的客户名称列,订单表的所有列,并利用订单表的数量、单价、折扣计算出金额,加载到某窗口的Table控件中,
假定这三个表来自于一个名为"Sale"的外部数据源,代码为:
Dim
jb As
New
SQLJoinTableBuilder("查询表1","订单")
jb.ConnectionName
= "Sale"
jb.AddTable("订单","产品ID","产品","产品ID")
jb.AddTable("订单",
"客户ID","客户","客户ID")
jb.AddCols("产品名称","客户名称","日期",
"数量","单价")
jb.AddExp("金额","数量
* 单价 * (1-折扣)")
Tables("窗口1_Table1").Fill(jb.BuildSql,"Sale",True)
提示:由于数据来自于多个数据表,所以Fill的最后一个参数必须设置为True。