以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]同列单元格相加的代码或表达式  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76472)

--  作者:lidusan
--  发布时间:2015/10/29 19:48:00
--  [求助]同列单元格相加的代码或表达式
各位老师请教一个单元格B1=B5+B8的计算代码或表达式,我知道狐表是数据库表,不是电子表格,看到狐表能做到很复杂的计算和统计,很是惊喜,只是帮助文件还没有看透所以先请老师做个范例代码学习一下,最好能附上注释便于理解。先谢谢各位导师.附图:

A B  C  d
   1   李四     请教如何获取B1=B5+B8的值   
  2   张三      B2的值=B6  
   3   王二     B3的值=B7+B9   
   4           
   5   李四  9       
   6   张三 6        
   7   王二 4       
  8    李四媳妇   3      
   9   小王  8       

--  作者:大红袍
--  发布时间:2015/10/29 19:59:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目19.foxdb


--  作者:lidusan
--  发布时间:2015/10/29 20:09:00
--  
谢谢大师.我打不开.我用的是商业版的.请大红袍版主贴代码或改一下版本.再次感谢!
--  作者:大红袍
--  发布时间:2015/10/29 20:51:00
--  

DataColChanged事件

 

Select Case e.DataCol.Name
    Case "第二列"
        Dim sum As Double = e.DataTable.Compute("sum(第二列)", "第一列 like \'%" & e.DataRow("第一列") & "%\'")
        e.DataTable.ReplaceFor("第三列", sum, "第一列 like \'%" & e.DataRow("第一列") & "%\'")
    Case "第一列"
        Dim sum As Double = e.DataTable.Compute("sum(第二列)", "第一列 like \'%" & e.DataRow("第一列") & "%\'")
        e.DataTable.ReplaceFor("第三列", sum, "第一列 like \'%" & e.DataRow("第一列") & "%\'")
        e.DataTable.DataCols("第二列").RaiseDataColChanged("第一列 like \'%" & e.OldValue & "%\'")
End Select


--  作者:lidusan
--  发布时间:2015/10/29 21:07:00
--  
很抱歉又要打扰您,放入代码后报错了。不知道是不是我版本的问题?
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:表,表A,DataColChanged
详细错误信息:
调用的目标发生了异常。
无效的聚合函数 Sum()和类型 String 的用法。


--  作者:游
--  发布时间:2015/10/29 21:10:00
--  
你的Sum列不是数值列
--  作者:lidusan
--  发布时间:2015/10/29 21:14:00
--  
对不起,版主,是我没有将第二列设为数值型.所有报错了.谢谢您的帮助.
--  作者:lidusan
--  发布时间:2015/10/29 21:59:00
--  
我发现了一个问题,就是我在向第二列输入数据的时候,比如填写李四对应列的单元格时回车立即就汇总了,但是填写李四媳妇对应列的单元格时回车汇总行数据不会变化,需要先填写李四媳妇的数据再填写李四的数据时才能正确汇总.我把代码放在ChangeEdit里面报错:
编译错误:“DataCol”不是“ChangeEditEventArgs”的成员。



错误代码:Select Case e.DataCol.Name
望指导。谢谢!

--  作者:大红袍
--  发布时间:2015/10/29 22:06:00
--  

datacolchanged事件

 

Select Case e.DataCol.Name
    Case "第二列"
        Dim sum As Double = e.DataTable.Compute("sum(第二列)", "第一列 like \'" & e.DataRow("第一列") & "%\' or 第一列 like \'" & e.DataRow("第一列").replace("媳妇", "") & "%\'")
        e.DataTable.ReplaceFor("第三列", sum, "第一列 like \'" & e.DataRow("第一列") & "%\' or 第一列 like \'" & e.DataRow("第一列").replace("媳妇", "") & "%\'")
    Case "第一列"
        Dim sum As Double = e.DataTable.Compute("sum(第二列)", "第一列 like \'" & e.DataRow("第一列") & "%\' or 第一列 like \'" & e.DataRow("第一列").replace("媳妇", "") & "%\'")
        e.DataTable.ReplaceFor("第三列", sum, "第一列 like \'" & e.DataRow("第一列") & "%\' or 第一列 like \'" & e.DataRow("第一列").replace("媳妇", "") & "%\'")
        e.DataTable.DataCols("第二列").RaiseDataColChanged("第一列 like \'" & e.oldvalue & "%\' or 第一列 like \'" & e.oldvalue.replace("媳妇", "") & "%\'")
End Select


--  作者:lidusan
--  发布时间:2015/10/30 8:59:00
--  
非常感谢大红袍大师的悉心帮助,只是基础太差代码好多没看明白,好像是动态引用求和,我慢慢消化,再次表示感谢.