以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]易表的单元格公式在狐表中如何转换?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1299)

--  作者:t_fs
--  发布时间:2008/12/2 14:38:00
--  [求助]易表的单元格公式在狐表中如何转换?
     正式版出炉在即,我在考虑原来用易表开发系统如何向狐表转化及转化的工作难度。现有一个问题即原易表中用单元格公式实现的计算,在狐表中如何变通的问题?请高手帮助一下,看看能否用狐表实现?其难易程度如何?谢谢了!
     
    说明:先求(一)原材料小计       (等于编号从06加到16的金额数值)
                  (二)车间费用小计    (等于编号从19加到21的金额数值)
           后计算(三)铸钢件成本         (等于编号05加上18的金额数值)  

详见下面的抓图:

图片点击可在新窗口打开查看此主题相关图片如下:tt截图.bmp
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2008/12/2 15:02:00
--  
tables("表名").Rows(x)("列名") = 值。
--  作者:ybil
--  发布时间:2008/12/2 15:29:00
--  

\'\'\'
if e.datacol.name = "金额" then
            dim sum1,sum2 as Double
            dim dt as DataTable = e.DataTable
            dim dr1,dr2,dr3 as DataRow
            dr1= dt.Find("[编号]= \'03\'")
            dr2= dt.Find("[编号]= \'05\'")
            dr3= dt.Find("[编号]= \'18\'")

            sum1 = dt .Compute("Sum(金额)","[编号] In(\'06\',\'07\',\'08\',\'09\',\'10\',\'11\',\'12\',\'13\',\'14\',\'15\',\'16\')")
            sum2 = dt .Compute("Sum(金额)","[编号] In(\'19\',\'20\',\'21\')")
 
            dr1("金额") = sum1+sum2
            dr2("金额") = sum1
            dr3("金额") = sum2
End if


--  作者:狐狸爸爸
--  发布时间:2008/12/2 15:32:00
--  

呵呵,点将,In如果改为between,可能会更简洁。


--  作者:ybil
--  发布时间:2008/12/2 15:34:00
--  
以下是引用狐狸爸爸在2008-12-2 15:32:00的发言:

呵呵,点将,In如果改为between,可能会更简洁。

哦,谢谢指点


--  作者:狐狸爸爸
--  发布时间:2008/12/2 15:37:00
--  
以下是引用ybil在2008-12-2 15:34:00的发言:

哦,谢谢指点


惭愧,是我搞错了,表达式不支持Between.

我脑子里出现的是SQL语句的语法。
图片点击可在新窗口打开查看


--  作者:t_fs
--  发布时间:2008/12/2 16:04:00
--  
     狐爸未明白我的意思。
     具体算法是在狐表中金额定位是通过编码来指定的。其算法我已基本测试成功,如下:(假设编号为数值型)

Dim Sum As Double  =  DataTables("表A").Compute("Sum(金额)","[编号] >= 6 and [编号] <= 16" )
tables("表A").Rows(1)("金额") = sum
Dim Sum1 As Double  =  DataTables("表A").Compute("Sum(金额)","[编号] >=19 and [编号] <=21" )
tables("表A").Rows(12)("金额") = sum1
tables("表A").Rows(0)("金额") = sum+sum1

    我现在想问题一下,如将金额值的写入也改成按编号定位,即将下列三行代码:
tables("表A").Rows(1)("金额") = sum               ‘改成编码=5 定位后再写入金额值
tables("表A").Rows(12)("金额") = sum1           ‘改成编码=18定位后再写入金额值
tables("表A").Rows(0)("金额") = sum+sum1     ‘改成编码=3定位后再写入金额值

   即这三行不用行数指定,而编码来指定写入位置应如何写呢?即假定不论行数如何变化,只要编码不变,公式即永远成立!即把rows()中的1、12、0换成编码=5、18、3.

   谢谢!


--  作者:t_fs
--  发布时间:2008/12/2 16:19:00
--  
    谢谢! Ybil已经解决了这个问题! 如果编码列改成数值型的话,用

Dim Sum As Double  =  DataTables("表A").Compute("Sum(金额)","[编号] >= 6 and [编号] <= 16" )

还是比较简单的。若是字符型的话

Dim Sum As Double  =  DataTables("表A").Compute("Sum(金额)","[编号] >= \'06\'  and [编号] <= \'16\' " )

好象也是正确的吧?
 
    学会了用  dr1= dt.Find("[编号]= \'03\'")    dr1("金额") = sum1+sum2    这二个组合经常用得到!
--  作者:狐狸爸爸
--  发布时间:2008/12/2 16:34:00
--  

呵呵,帮助中有啊


--  作者:hbfnmxb
--  发布时间:2008/12/4 7:55:00
--  
不错,学习了。