Foxtable(狐表)用户栏目专家坐堂 → 判断列计算


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

主题:判断列计算

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110554 积分:562660 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/4/18 11:58:00 [显示全部帖子]

不是这段代码的问题、DataColChanged事件所有代码发上来

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


加好友 发短信
等级:超级版主 帖子:110554 积分:562660 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/4/18 14:17:00 [显示全部帖子]

可以这样优化一下

Dim dr As DataRow = e.DataRow
If e.DataCol.Name = "销售型号" Then '如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then '如果新值是空白,也就是品名列的内容为空
        dr("吊牌单价") = Nothing '那么清空此行单价列的内容
        dr("成本单价") = Nothing
    Else
        Dim dr2 As DataRow
        '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr2 = DataTables("基本资料").Find("[型号] = '" & e.NewValue & "'")
        If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
            dr("吊牌单价") = dr2("单价")
            dr("成本单价") = dr2("成本")
        End If
    End If
End If

Select Case e.DataCol.Name
    Case "销售单价", "吊牌单价"
        If dr.IsNull("销售单价") OrElse dr.IsNull("吊牌单价") OrElse dr("吊牌单价") = 0 Then
            dr("折扣扣率") = Nothing
        Else
            dr("折扣扣率") = dr("销售单价") / dr("吊牌单价")
        End If 
        
End Select

Select Case e.DataCol.Name
    Case "销售公司", "销售型号"
        If dr.IsNull("销售公司") OrElse dr.IsNull("销售型号") Then
            dr("套餐折扣") = Nothing
        Else
            Dim pr As DataRow
            Dim filter As String
            filter = "结算公司 = '" & dr2("销售公司") & "' And  型号 = '" & dr2("销售型号") & "'"
            pr = DataTables("套餐").Find(filter)
            If pr IsNot Nothing Then
                dr("套餐折扣") = pr("套餐折扣")
            End If
        End If
    Case "吊牌单价", "套餐折扣", "结算类别", "销售单价"
        If dr("结算类别") = "代销" Then
            dr("结算金额") = dr("吊牌单价") * dr("套餐折扣")
        ElseIf dr("结算类别") = "经销" Then
            dr("结算金额") = dr("销售单价") * dr("套餐折扣")
        End If
    Case "结算金额", "成本单价"
        If dr.IsNull("结算金额") OrElse dr.IsNull("成本单价") Then '如果新值是空白,也就是品名列的内容为空
            dr("成本预算") = Nothing '那么清空此行单价列的内容
        Else
            '否则在产品表查找同名的产品行,将找到的行赋值给变量dr
            dr("成本预算") = dr("结算金额") - dr("成本单价")
        End If
End Select


 回到顶部