以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求改进方法!!  (http://foxtable.com/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