Foxtable(狐表)用户栏目专家坐堂 → [求助]易表的单元格公式在狐表中如何转换?


  共有24618人关注过本帖树形打印复制链接

主题:[求助]易表的单元格公式在狐表中如何转换?

帅哥哟,离线,有人找我吗?
t_fs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:2808 威望:0 精华:0 注册:2008/9/1 8:46:00
[求助]易表的单元格公式在狐表中如何转换?  发帖心情 Post By:2008/12/2 14:38:00 [只看该作者]

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

详见下面的抓图:

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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/12/2 15:02:00 [只看该作者]

tables("表名").Rows(x)("列名") = 值。

 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/12/2 15:32:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2008/12/2 15:34:00 [只看该作者]

以下是引用狐狸爸爸在2008-12-2 15:32:00的发言:

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

哦,谢谢指点


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/12/2 15:37:00 [只看该作者]

以下是引用ybil在2008-12-2 15:34:00的发言:

哦,谢谢指点


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

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


 回到顶部
帅哥哟,离线,有人找我吗?
t_fs
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:2808 威望:0 精华:0 注册:2008/9/1 8:46:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:2808 威望:0 精华:0 注册:2008/9/1 8:46:00
  发帖心情 Post By: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    这二个组合经常用得到!

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2008/12/2 16:34:00 [只看该作者]

呵呵,帮助中有啊


 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:559 积分:6288 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2008/12/4 7:55:00 [只看该作者]

不错,学习了。

 回到顶部