以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=122230)

--  作者:nbsugu_z
--  发布时间:2018/7/21 9:48:00
--  求代码

表A的一个单元格数据要自动填。来源是表A的另一列数据的累计(合计数)

 

区域1 :列:项目分类1   完工金额总计      (项目分类1列的记录不重复是唯一的)

 

区域2:列:项目分类2   已完工金额  品名(品名中有品种1、品种2)     (项目分类2内容、品名都有重复,相当于明细)

 

在同一表中 ,条件是:完工金额总计=从区域2列找出所有同区域1中的项目分类名称相同的名称行并且品名=品种1的所有金额汇总数

 

这代码有点难,求代码

 


--  作者:有点蓝
--  发布时间:2018/7/21 10:00:00
--  
参考:http://www.foxtable.com/webhelp/scr/1454.htm

帮助是跨表,也可以同表统计,方法一样

--  作者:nbsugu_z
--  发布时间:2018/7/21 11:00:00
--  

If e.DataCol.Name = "已完工金额" Then \'发生变化的是产品列.
    \'则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("品种1完工金额总计") = DataTables("表A").Compute("Sum(已完工金额)","[项目分类2] = \'" & e.NewValue & "\'" and  "[品名] =“品种1”)

    e.DataRow("品种2完工金额总计") = DataTables("表A").Compute("Sum(已完工金额)","[项目分类2] = \'" & e.NewValue & "\'" and  "[品名] =“品种2”)

End If

 

老师,参照这全代码还是不行

 

表是这样的:

     项目分类1   品种1完工总金额   品种2已完工金额   项目分类2    已完工金额            品种

       项目1                          

       项目2                            

                                                                         项目1             200              品种2

                                                                         项目2              50               品种1

                                                                         项目1             200              品种2

                                                                         项目2             100              品种1

 

     以上要求第二、三列自动填数  ,项目分类1为空的不填。

       

[此贴子已经被作者于2018/7/21 11:01:55编辑过]

--  作者:有点蓝
--  发布时间:2018/7/21 11:09:00
--  
选中"已完工金额"列,重置列

If e.DataCol.Name = "已完工金额" OrElse e.DataCol.Name = "项目分类2" Then \'发生变化的是产品列.
    \'则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("品种1完工金额总计") = e.DataTable.Compute("Sum(已完工金额)","[项目分类2] = \'" & e.DataRow("项目分类2") & "\'" And  "[品名] ="品种1")
    e.DataRow("品种2完工金额总计") = e.DataTable.Compute("Sum(已完工金额)","[项目分类2] = \'" & e.DataRow("项目分类2") & "\'" And  "[品名] ="品种2") 

End If

--  作者:nbsugu_z
--  发布时间:2018/7/21 12:32:00
--  

.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2018.7.9.1
错误所在事件:表,pzk, DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“[项目分类2] = \'\'”到类型“Long”的转换无效。
输入字符串的格式不正确。

[此贴子已经被作者于2018/7/21 12:38:22编辑过]

--  作者:nbsugu_z
--  发布时间:2018/7/21 13:28:00
--  
修改来修改去,提示是没了,但是数据出不来,我觉得是不是要用到find,重置列有变化时,先在项目分类1中找到相同的项目名称?然后按这个项目名称对项目2对应的金额进行汇总,再把汇总数填到对应在项目中去?就是代码不知道如何写了
--  作者:y2287958
--  发布时间:2018/7/21 13:49:00
--  
为何就不上个例子呢
--  作者:nbsugu_z
--  发布时间:2018/7/21 14:04:00
--  
老师,解决了,谢谢。标点符号错了。还有是& e.DataRow("项目分类2") & "\'" And  "[品名] ="品种1")   项目分类要修改成1