Foxtable(狐表)用户栏目专家坐堂 → 向表达式列总额增加金额


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

主题:向表达式列总额增加金额

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


加好友 发短信
等级:幼狐 帖子:55 积分:439 威望:0 精华:0 注册:2017/6/5 21:39:00
向表达式列总额增加金额  发帖心情 Post By:2017/6/30 11:02:00 [只看该作者]

尊敬的学长、兄台:

我司的淋浴房是定制产品,在订单表中输入产品尺寸后,关联调用产品表的平方单价,订单表的产品的标配总价会自动计算。这个我已经实现了。
订单表中有一个数值列“门头高”,当客户要门头时,要加收100元的定制费,在数值列“门头高”输入门头的高度后,如何实现在已经生产的标配总价中自动加上100元呢?
我在订单表的datacolchanged表事件中写如下代码。
Select Case e.DataCol.name
Case "门头高"
   If e.DataRow("门头高") > 0 Then
     e.DataRow("标配总价") = e.DataRow("标配总价") + 100
   End If
End Select
出现运行错误提示“调用的目标发生了异常”,点击显示详细形象后,显示 “列"总额"为只读”。
请问是不是表达列只能是只读的,或者说是我的代码错误,请赐教。

盼复,感谢!
[此贴子已经被作者于2017/6/30 11:25:18编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110554 积分:562660 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/30 11:20:00 [只看该作者]

1、表达列只能是只读

2、不是上面代码的问题,检查其它代码

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 11:34:00 [只看该作者]

 为什么不能直接修改表达式?

 

 假如本来的表达式是 Sum(Child(po).金额)

 

 那就改成

 

iif(门头高>0, Sum(Child(po).金额)+100, Sum(Child(po).金额))

 

http://www.foxtable.com/webhelp/scr/0102.htm

 

[此贴子已经被作者于2017/6/30 11:34:16编辑过]

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


加好友 发短信
等级:幼狐 帖子:55 积分:439 威望:0 精华:0 注册:2017/6/5 21:39:00
  发帖心情 Post By:2017/6/30 11:37:00 [只看该作者]

谢谢您的回复!

标配总价的表达式是: 平方价 *([产品宽度]  / 1000 + IsNull([产品深度] / 1000,0)) * ([产品高度] + isnull([门头高],0))/ 1000 * [数量] * (1 - IsNull(价格折扣,0)) 
计算都没有问题。

订单表的datacolchanged表事件中全部代码如下:
Select Case e.DataCol.name
    Case "商户号"
        Dim cu As DataRow = DataTables("客户表").find("商户号 = '" & e.newvalue & "'")
        If cu IsNot Nothing Then '如果找到了
            e.DataRow("价格折扣") = cu("价格折扣")
        End If
        If e.DataRow("商户号") = Nothing
            e.DataRow("价格折扣") = Nothing
        End If
        
    Case "型号"
        Dim pr As DataRow = DataTables("淋浴房产品表").find("型号 = '" & e.newvalue & "'")
        If pr IsNot Nothing Then '如果找到了
            e.DataRow("平方价") = pr("平方价")
            e.DataRow("特价") = pr("特价")
            If e.DataRow("特价") = True
               e.DataRow("价格折扣") = 0
            End If
        Else 
            e.DataRow("特价") = Nothing
            e.DataRow("平方价") = Nothing
        End If

   Case "门头高"
        If e.DataRow("门头高") > 0 Then
           e.DataRow("标配总价") = e.DataRow("标配总价") + 100
        End If
End Select

前两个Case代码测试过,没有问题。我们要实现是数值列“门头高”输入门头的高度后,如何实现按上述表达式生产的标配总价中再自动加上100元的门头定制费?
为此加上上述最后一个Case "门头高"的代码后,运行就出错了,没有实现我们想要的。

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


加好友 发短信
等级:幼狐 帖子:55 积分:439 威望:0 精华:0 注册:2017/6/5 21:39:00
  发帖心情 Post By:2017/6/30 12:10:00 [只看该作者]

醍醐灌顶,初学中,非常感谢您!
表达式如下,分段显示方便阅读:
                iif(门头高>0,
                    平方价 *([产品宽度]  / 1000 + IsNull([产品深度] / 1000,0)) * ([产品高度] + isnull([门头高],0))/ 1000 * [数量] * (1 - IsNull(价格折扣,0))+100,
                    平方价 *([产品宽度]  / 1000 + IsNull([产品深度] / 1000,0)) * ([产品高度] + isnull([门头高],0))/ 1000 * [数量] * (1 - IsNull(价格折扣,0)))
感觉代码好长 :-), 不过测试通过了。

现在还有两个数据列要影响总额:
1,如果外包装钉木架,勾选逻辑列“是否钉木架”,则标配总价加45元;
2,  如果淋浴房门带锁,填入微整数列“带锁个数”,输入1,则标配总价加加60元,输入2,则加120元;
iff函数应该是做不到吧? 请赐教,感谢您!

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110554 积分:562660 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/30 12:13:00 [只看该作者]

平方价 *([产品宽度]  / 1000 + IsNull([产品深度] / 1000,0)) * ([产品高度] + isnull([门头高],0))/ 1000 * [数量] * (1 - IsNull(价格折扣,0)) + IIF(门头高>0,100,0) + IIF(是否钉木架=true,45,0)+ IIF(......

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 12:18:00 [只看该作者]

 一样的,可以嵌套iif的。多个iif也可以相加。

 

iif(条件1, 公式1, 公式2) + iif(条件2, 公式1, 公式2)


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


加好友 发短信
等级:幼狐 帖子:55 积分:439 威望:0 精华:0 注册:2017/6/5 21:39:00
  发帖心情 Post By:2017/6/30 12:55:00 [只看该作者]

谢谢您!

简化了表达式,是否钉木架实现了自动加45元!

可是带锁数量,是个变量,我试了加上如下代码:
 + IIF(带锁个数 = e.newvalue,e.newvalue*70,0)
实现不了,提示附近所示的错误。

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20170630125414.png
图片点击可在新窗口打开查看

请赐教,谢谢!

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


加好友 发短信
等级:幼狐 帖子:55 积分:439 威望:0 精华:0 注册:2017/6/5 21:39:00
  发帖心情 Post By:2017/6/30 14:01:00 [只看该作者]

您忙吧? 不好意思这么频繁地打扰您。
加锁一般是1个或者2个,我就直接这样写了,可以了。
+ IIF(带锁个数=1,70,0) + IIF(带锁个数=2,140,0)

谢谢您!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/6/30 14:12:00 [只看该作者]

直接写成这样即可

 

 带锁个数 * 70


 回到顶部