Foxtable(狐表)用户栏目专家坐堂 → DataColChanged


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

主题:DataColChanged

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


加好友 发短信
等级:四尾狐 帖子:850 积分:6650 威望:0 精华:0 注册:2013/2/18 17:46:00
DataColChanged  发帖心情 Post By:2014/5/7 9:26:00 [只看该作者]

做了一个按钮,事件的Click代码是 :DataTables("生产调度_Table3").DataCols("任务单编号").RaiseDataColChanged()。

表格的DataColChanged代码是:

If e.DataCol.Name = "任务单编号" Then '发生变化的是产品列.
    '则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("理论计算金额") = DataTables("生产调度_Table2").Compute("Sum(材料价格)","[工艺单编号] like '" & e.NewValue & "-*'")+DataTables("生产调度_Table2").Compute("Sum(加工金额)","[工艺单编号] like '" & e.NewValue & "-*'")
End If

 

Select Case e.DataCol.Name
    Case "任务单编号"
        If e.DataRow.IsNull("任务单编号") = False Then '如果已经输入订单编号
            If e.DataRow.GetChildRows("工艺单").Count = 0 Then '而且无订单明细
                Dim dr As DataRow = DataTables("工艺单").AddNew()
                dr("任务单编号") = e.DataRow("任务单编号")
            End If
        End If
End Select

 

我希望当我点击按钮时,

只执行 

e.DataRow("理论计算金额") = DataTables("生产调度_Table2").Compute("Sum(材料价格)","[工艺单编号] like '" & e.NewValue & "-*'")+DataTables("生产调度_Table2").Compute("Sum(加工金额)","[工艺单编号] like '" & e.NewValue & "-*'")
End If

不执行

Select Case e.DataCol.Name
    Case "任务单编号"
        If e.DataRow.IsNull("任务单编号") = False Then '如果已经输入订单编号
            If e.DataRow.GetChildRows("工艺单").Count = 0 Then '而且无订单明细
                Dim dr As DataRow = DataTables("工艺单").AddNew()
                dr("任务单编号") = e.DataRow("任务单编号")
            End If
        End If
End Select

该怎么处理?


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/7 9:29:00 [只看该作者]

RaiseDataColChanged  可以设置条件的

也可以指定触发行


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


加好友 发短信
等级:四尾狐 帖子:850 积分:6650 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/5/7 9:39:00 [只看该作者]

两条代码都是针对"任务单编号"触发的。

我把第一条代码的触发设置在一个按钮中。

现在当我点击按钮后,两条代码都触发了


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


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

 代码有矛盾,只要满足条件,就会触发。建议改一下代码,触发另一列。

 

If e.DataCol.Name = "任务单编号" OrElse e.DataCol.Name = "理论计算金额" Then '发生变化的是产品列.
    '则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列
    e.DataRow("理论计算金额") = DataTables("生产调度_Table2").Compute("Sum(材料价格)","[工艺单编号] like '" & e.NewValue & "-*'")+DataTables("生产调度_Table2").Compute("Sum(加工金额)","[工艺单编号] like '" & e.NewValue & "-*'")
End If

 

Select Case e.DataCol.Name
    Case "任务单编号"
        If e.DataRow.IsNull("任务单编号") = False Then '如果已经输入订单编号
            If e.DataRow.GetChildRows("工艺单").Count = 0 Then '而且无订单明细
                Dim dr As DataRow = DataTables("工艺单").AddNew()
                dr("任务单编号") = e.DataRow("任务单编号")
            End If
        End If
End Select


 回到顶部