以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 以下代码 写在销售单明细的datachanged 事件中 没有出错?就是有点不严谨 狐爸帮我看一下 如何写得更好? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=82973) |
-- 作者:jswjyjf -- 发布时间:2016/3/29 10:01:00 -- 以下代码 写在销售单明细的datachanged 事件中 没有出错?就是有点不严谨 狐爸帮我看一下 如何写得更好? 以下代码 写在销售单明细的datachanged 事件中 没有出错?就是有点不严谨 狐爸帮我看一下 如何写得更好? If Forms("销售单").opened() If e.DataCol.Name = "辅助数量" Then e.DataRow("数量") =e.DataRow("辅助数量")*e.DataRow("换算比例") End If If e.DataCol.Name = "数量" OrElse e.DataCol.Name = "单价" Then e.DataRow("辅助数量")=e.DataRow("数量")/e.DataRow("换算比例") e.DataRow("金额") =e.DataRow("数量")*e.DataRow("单价") End If Tables("销售单").Current("数量") = Tables("销售单明细").Compute("sum(数量)") Tables("销售单").Current("金额") = Tables("销售单明细").Compute("sum(金额)") Tables("销售单").Current("累计余额") = Tables("销售单").current("上期余额")+Tables("销售单").Current("金额") vars("ljsl")=Tables("销售单").current("数量") vars("ljje")=Tables("销售单").current("金额") vars("jzljje")=Tables("销售单").current("累计余额") Forms("销售单").Controls("Label8").text=" 数量: " & vars("ljsl") & " 金额: " & vars("ljje") \' Forms("销售单").Controls("Label11").text=" 大写: " & cumoney(vars("jzljje")) & " 小写: " & vars("jzljje") Forms("销售单").Controls("Label11").text=" 大写: " & iif(vars("jzljje")>0,cumoney(vars("jzljje")),cumoney(math.abs(vars("jzljje")))) & " 小写: " & vars("jzljje") End If If Forms("销售单").opened() If e.DataCol.name="产品编码" Dim filter As String = "客户名称 =\'" & Tables("销售单").current("客户名称") & "\'And 产品编码=\'" & e.DataRow("产品编码") & "\'" Dim dr1 As DataRow dr1 =DataTables("销售单明细").sqlFind(filter,"日期 Desc") If dr1 IsNot Nothing e.DataRow("单价")=dr1("单价") Else e.DataRow("单价")=0 End If End If End If If Forms("销售单").opened() If e.DataCol.name="数量" If e.DataRow.IsNull("颜色") messagebox.show("请输入颜色") End If Dim filter As String = "产品编码 =\'" & e.DataRow("产品编码") & "\'And 颜色 =\'" & e.DataRow("颜色") & "\'And 仓库 =\'" & e.DataRow("仓库") & "\'" Dim dr1 As DataRow dr1 = DataTables("库存表").Find(filter) If dr1 IsNot Nothing Then If dr1("库存数量")>=e.DataRow("数量") e.DataRow("成本单价")=dr1("库存金额")/dr1("库存数量") e.DataRow("成本")=e.DataRow("数量")*e.DataRow("成本单价") Else messagebox.show("库存不足") e.DataRow("数量")=0 e.DataRow("成本单价")=e.DataRow("单价") e.DataRow("成本")=e.DataRow("数量")*e.DataRow("成本单价") End If Else messagebox.show("库存中没有这个产品!!!") e.DataRow("数量")=0 End If End If End If |
-- 作者:大红袍 -- 发布时间:2016/3/29 10:37:00 -- 没看懂你的逻辑,怎么不严谨?有什么问题?具体例子上传上来。 |
-- 作者:jswjyjf -- 发布时间:2016/3/29 11:18:00 -- 销售明细单有两个字段 辅助数量 ,数量。辅助数量与数量有换算关系 1:3 ,如果输入了辅助数量,数量就自动产生了,如果在数量里输入,辅助数量根据换算也算出了 在datachanegd 如何写代码?
|
-- 作者:大红袍 -- 发布时间:2016/3/29 11:34:00 -- SystemReady = False If e.DataCol.Name = "辅助数量" Then e.DataRow("数量") = e.NewValue / 3 ElseIf e.DataCol.Name = "数量" Then e.DataRow("辅助数量") = e.newValue * 3 End If SystemReady = True |
-- 作者:jswjyjf -- 发布时间:2016/3/29 13:03:00 -- 譬如这样写 If e.DataCol.Name = "数量" OrElse e.DataCol.Name = "单价" Then e.DataRow("辅助数量")=e.DataRow("数量")/e.DataRow("换算比例") e.DataRow("金额") =e.DataRow("数量")*e.DataRow("单价") Else e.DataRow("数量") =e.DataRow("辅助数量")*e.DataRow("换算比例") End If 输入数量时 会数量会跟着变动 变成有小数了
|
-- 作者:jswjyjf -- 发布时间:2016/3/29 14:27:00 -- 还是用afteredit 事件处理 解决了 |
-- 作者:大红袍 -- 发布时间:2016/3/29 14:49:00 -- SystemReady = False If e.DataCol.Name = "辅助数量" Then e.DataRow("数量") = e.DataRow("辅助数量")*e.DataRow("换算比例") ElseIf e.DataCol.Name = "数量" Then e.DataRow("辅助数量")=e.DataRow("数量")/e.DataRow("换算比例") End If SystemReady = True [此贴子已经被作者于2016/3/29 14:50:00编辑过]
|
-- 作者:jswjyjf -- 发布时间:2016/3/29 15:58:00 -- 上面的代码放在datachanged事件吗 |
-- 作者:大红袍 -- 发布时间:2016/3/29 16:10:00 -- 是。 |
-- 作者:jswjyjf -- 发布时间:2016/3/29 16:15:00 -- 明白 多谢
|