以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  SQL函数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47376)

--  作者:jianjingmaoyi
--  发布时间:2014/3/9 12:13:00
--  SQL函数
Dim Val As Double
Val =
DataTables("订单").SQLCompute("Sum(数量 * 单价 * (1 - 折扣))","产品 = \'PD01\'")
Output
.Show(Val)

类似于这样的函数 这个表必须在前台吗,不加载不行? 如果这样意义不大呀

--  作者:y2287958
--  发布时间:2014/3/9 12:19:00
--  
数据可以不加载
--  作者:jianjingmaoyi
--  发布时间:2014/3/9 13:08:00
--  
数据我知道可以不加载 我说的是表
--  作者:y2287958
--  发布时间:2014/3/9 13:18:00
--  
表是必须的
俺咨询过
当然不如直接用sql
[此贴子已经被作者于2014-3-9 13:18:20编辑过]

--  作者:jianjingmaoyi
--  发布时间:2014/3/9 15:17:00
--  
鱼和熊掌不可兼得呀
--  作者:lsy
--  发布时间:2014/3/9 16:06:00
--  
用SQLCommand,生成的DataTable,灵活方便。
--  作者:逛逛
--  发布时间:2014/3/9 16:34:00
--  
以下是引用jianjingmaoyi在2014-3-9 12:13:00的发言:
Dim Val As Double
Val =
DataTables("订单").SQLCompute("Sum(数量 * 单价 * (1 - 折扣))","产品 = \'PD01\'")
Output
.Show(Val)

类似于这样的函数 这个表必须在前台吗,不加载不行? 如果这样意义不大呀

应该不是一定要加载到前台吧。DataTables("订单")就是一个DataTable ,动态加载也可也指定啊。

 

 

动态加载还是要用到SQLCommand ,但对SQL语句不熟的人还是有吸引力的,语句简单了很多。

 

我试了一下这个,

 

Dim dt As DataTable

Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "SELECT TOP 1 * From 订单 "     
dt = cmd.ExecuteReader()
Dim Val As Double
Val = dt.SQLCompute("Sum(数量 * 单价 * (1 - 折扣))","产品ID = \'P01\'")
Output.Show(Val)


--  作者:有点酸
--  发布时间:2014/3/9 23:22:00
--  

逛逛说的对,这节帮助后面介绍了:

 

http://www.foxtable.com/help/topics/2916.htm

 

另一种执行方式

 

DataTable的所有后台处理方法,当然都要基于DataTable运行,所以上面的示例中,我们加载了一个空的行政区域表,然后基于此空表处理后台的行政区域表的数据。
虽然我们可以通过代码在Foxtale的主界面中隐藏这个空表,但还是有一定程度的不便,而且有较多数量只需后台处理不需要加载数据的表时,还会加大系统对资源的消耗。
如果愿意,我们可以考虑另一种方式,通过SQL语句生成一个临时表,基于这个临时表执行后台数据处理方法。

 

首先我们在全局代码中定义一个变量:

Public xzqy As DataTable

 

然后在AfterOpenProject事件中加上代码:

 

Dim cmd As New SQLCommand
cmd
.ConnectionName = "数据源名称"
cmd
.CommandText = "SELECT * From {行政区域} Where [省市] Is Null"
xzqy
 = cmd.ExecuteReader

 

上面的代码生成一个空的临时表,保存在全局变量xzqy中,这个临时表对应后台的行政区域表。

现在我们就可以通过此临时表处理后台的行政区域表的数据了,例如:

 

Tables("客户").Cols("省市").Combolist = xzqy.SQLGetComboListString("省市")

[此贴子已经被作者于2014-3-9 23:22:14编辑过]