以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于Datacolchanged 事件 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=132411) |
||||
-- 作者:873773115 -- 发布时间:2019/3/21 12:05:00 -- 关于Datacolchanged 事件 请问老师,在什么情况下 会导致该事件无法执行? (比如电脑硬件有问题,或者有大量的数据要处理会不会导致代码停止执行呢??) 最近无缘无故会出现,出库表修改了张数 ,库存平方不变,金额也不变 (库存平方 = 单张库存平方 * 张数 金额 = 库存平方 * 单价 ) 因为这个出库单是对外的,需要给客户 出现后影响挺大的,请老师帮忙看下
|
||||
-- 作者:873773115 -- 发布时间: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 -- 发布时间:2019/3/21 12:13:00 -- 老师,这是整个出库表的窗体 , 出库表的数据需要从 排单表中获取 vars("_qd") 这个变量是为了 限制在取单 获取数据过程中 不触发 datacolchanged 事件,没有意义 |
||||
-- 作者:873773115 -- 发布时间:2019/3/21 12:13:00 --
|
||||
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2019/3/21 12:39:00 -- 第一个判断汇总行的,第二个是判断是否在取单过程中的,第三个是判断品号列 输入的品号是否正确的 。 这三个不会影响下面代码执行 1 在更改某一行内容时,不可能同时选中汇总行 2 vars("_qd") 变量,在取单前变为 vars("_qd") = "qdz" 取单完成后就 变为 vars("_qd") = "qdh",也不会影响 3 在输入某一个品号时,如果品号错误 则品号直接取消为空了, 直到它输入正确的品号前,不能保存 所以也不会影响
|
||||
-- 作者:有点蓝 -- 发布时间:2019/3/21 13:49:00 -- 汇总行不会触发这个事件,没有必要判断 其它的判断仍然会有影响,只是您自己以为不会有影响而已。编程这种东西以测试结果为准,因为别人未必会按照您认为的模式去进行操作。
|