以文本方式查看主题

-  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
--  
明白
多谢