以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求改进方法!! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61294) |
-- 作者:heying325 -- 发布时间:2014/12/10 14:43:00 -- 求改进方法!! 我有两个表A,和表B 表A中有一列,是通过表B中的记录公式计算所得到的。。 表B中公式列,举个例子:9+@(x-1.2)*3 For Each ro As Row In tables("表A“).Rows Dim dr As DataRow = DataTables("表B").Find("条件……") If dr IsNot Nothing Then Dim s As String = dr("公式") s = "Dim Sum1 As double = " & s.Replace("@", "Math.Ceiling").Replace("x", ro("末端重量")) & vbcrlf s = s & "Return Sum1" Functions.Add("Sum",s) Functions.Complie() ro("中转费") = Functions.Execute("Sum") Functions.Remove("Sum") End If Next 这个是没问题的。。可是那个速度。。。很令人纠结。。。几百行就要计算很久,这还是测试阶段少量的数据。。。求方法,求改进,越快越好!!
|
-- 作者:Bin -- 发布时间:2014/12/10 14:45:00 -- 为什么要这样一次性遍历所有表计算? 写在DataColChanged事件, 修改那一行的时候就只计算这一行,不是很好么? |
-- 作者:heying325 -- 发布时间:2014/12/10 14:53:00 -- 设计的计算是一个按钮。。只需要计算查询的数据。。 |
-- 作者:Bin -- 发布时间:2014/12/10 14:57:00 -- 如果是查询出来的数据,直接生成查询表,然后用表达式计算好了. 否则就用代码在DataColChanged事件里计算
|
-- 作者:有点甜 -- 发布时间:2014/12/10 15:41:00 -- 测试了一下,没有办法处理的。
要要公式,就必须动态编译代码。 |
-- 作者:heying325 -- 发布时间:2014/12/10 16:00:00 -- 以下是引用有点甜在2014-12-10 15:41:00的发言:
测试了一下,没有办法处理的。
要要公式,就必须动态编译代码。 请问能不能在sql server后台直接计算呢? [此贴子已经被作者于2014-12-10 16:01:00编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/12/10 16:06:00 -- 不行,Sqlserver也是不能做 |
-- 作者:有点甜 -- 发布时间:2014/12/10 16:09:00 -- 如果合成sql语句,再执行,红色代码现在foxtable里面生成,然后发送给数据库运行。
比如合成n句 update {表A} Set 第一列 = 9+Celling(x-1.2)*3 where [_Identify] = 1 |