Foxtable(狐表)用户栏目专家坐堂 → 关于Datacolchanged 事件


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

主题:关于Datacolchanged 事件

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


加好友 发短信
等级:小狐 帖子:314 积分:2887 威望:0 精华:0 注册:2017/11/5 13:39:00
关于Datacolchanged 事件  发帖心情 Post By:2019/3/21 12:05:00 [只看该作者]

请问老师,在什么情况下 会导致该事件无法执行?  (比如电脑硬件有问题,或者有大量的数据要处理会不会导致代码停止执行呢??)
最近无缘无故会出现,出库表修改了张数 ,库存平方不变,金额也不变 (库存平方 = 单张库存平方 * 张数   金额 = 库存平方 * 单价 )

因为这个出库单是对外的,需要给客户   出现后影响挺大的,请老师帮忙看下

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


加好友 发短信
等级:小狐 帖子:314 积分:2887 威望:0 精华:0 注册:2017/11/5 13:39:00
  发帖心情 Post By:2019/3/21 12:07:00 [只看该作者]

Dim dtw As DataRow

If Tables("出库主表_出库明细表").Position = -1 Then
    Return
End If

If vars("_qd") = "qdz"
    Return
End If

If e.DataRow.Isnull("品号") =False Then
    dtw = DataTables("产品表").find("品号 = '" & e.DataRow("品号") & "'")
    If dtw Is Nothing Then
        MessageBox.Show("当前品号不存在,请核对!","提醒")
        e.DataRow("品号") = Nothing
        Return
    End If
    
    Select Case e.DataCol.name
        Case "张数","品号","做账_单价","开单_单价"
            e.DataRow("库存平方") = e.DataRow("单张库存平方") * e.DataRow("张数")
            e.DataRow("销售平方") = e.DataRow("单张销售平方") * e.DataRow("张数")
            e.DataRow("装车平方") = e.DataRow("单张装车平方") * e.DataRow("张数")
            If e.DataRow("品名") = "搬运费" Or e.DataRow("品名") = "冲减货款" Then
                e.DataRow("做账_金额") = e.DataRow("做账_单价")
                e.DataRow("开单_金额") = e.DataRow("开单_单价")
            Else
                e.DataRow("做账_金额") = e.DataRow("销售平方") * e.DataRow("做账_单价")
                e.DataRow("开单_金额") = e.DataRow("销售平方") * e.DataRow("开单_单价")
            End If
        Case "订单备注"
            If e.DataRow.IsNull("订单备注") = False Then
               If e.DataRow("订单备注").Contains("无表层") Then
               e.DataRow("种类") = "3E棕无"
               End If
            End If
    End Select
End If

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


加好友 发短信
等级:小狐 帖子:314 积分:2887 威望:0 精华:0 注册:2017/11/5 13:39:00
  发帖心情 Post By:2019/3/21 12:13:00 [只看该作者]

老师,这是整个出库表的窗体 , 出库表的数据需要从 排单表中获取      vars("_qd") 这个变量是为了  限制在取单 获取数据过程中 不触发  datacolchanged 事件,没有意义

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


加好友 发短信
等级:小狐 帖子:314 积分:2887 威望:0 精华:0 注册:2017/11/5 13:39:00
  发帖心情 Post By:2019/3/21 12:13:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:出库.zip


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


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

Dim dtw As DataRow

If Tables("出库主表_出库明细表").Position = -1 Then
    Return
End If

If vars("_qd") = "qdz"
    Return
End If

If e.DataRow.Isnull("品号") =False Then
    dtw = DataTables("产品表").find("品号 = '" & e.DataRow("品号") & "'")
    If dtw Is Nothing Then
        MessageBox.Show("当前品号不存在,请核对!","提醒")
        e.DataRow("品号") = Nothing
        Return
    End If
End If
‘上面几个判断干嘛用的,如果不符合条件会导致下面不进行计算
Select Case e.DataCol.name
    Case "张数","单张装车平方","单张销售平方","单张库存平方"
        e.DataRow("库存平方") = e.DataRow("单张库存平方") * e.DataRow("张数")
        e.DataRow("销售平方") = e.DataRow("单张销售平方") * e.DataRow("张数")
        e.DataRow("装车平方") = e.DataRow("单张装车平方") * e.DataRow("张数")

    Case "品名","做账_单价","开单_单价"
        If e.DataRow("品名") = "搬运费" Or e.DataRow("品名") = "冲减货款" Then
            e.DataRow("做账_金额") = e.DataRow("做账_单价")
            e.DataRow("开单_金额") = e.DataRow("开单_单价")
        Else
            e.DataRow("做账_金额") = e.DataRow("销售平方") * e.DataRow("做账_单价")
            e.DataRow("开单_金额") = e.DataRow("销售平方") * e.DataRow("开单_单价")
        End If
    Case "订单备注"
        If e.DataRow.IsNull("订单备注") = False Then
            If e.DataRow("订单备注").Contains("无表层") Then
                e.DataRow("种类") = "3E棕无"
            End If
        End If
End Select


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


加好友 发短信
等级:小狐 帖子:314 积分:2887 威望:0 精华:0 注册:2017/11/5 13:39:00
  发帖心情 Post By:2019/3/21 12:39:00 [只看该作者]

第一个判断汇总行的,第二个是判断是否在取单过程中的,第三个是判断品号列 输入的品号是否正确的 。 这三个不会影响下面代码执行

1 在更改某一行内容时,不可能同时选中汇总行
vars("_qd") 变量,在取单前变为 vars("_qd") = "qdz"  取单完成后就 变为 vars("_qd") = "qdh",也不会影响
3 在输入某一个品号时,如果品号错误  则品号直接取消为空了,  直到它输入正确的品号前,不能保存   所以也不会影响

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


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

汇总行不会触发这个事件,没有必要判断

其它的判断仍然会有影响,只是您自己以为不会有影响而已。编程这种东西以测试结果为准,因为别人未必会按照您认为的模式去进行操作。

 回到顶部