Foxtable(狐表)用户栏目专家坐堂 → 以下代码 写在销售单明细的datachanged 事件中 没有出错?就是有点不严谨 狐爸帮我看一下 如何写得更好?


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

主题:以下代码 写在销售单明细的datachanged 事件中 没有出错?就是有点不严谨 狐爸帮我看一下 如何写得更好?

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
以下代码 写在销售单明细的datachanged 事件中 没有出错?就是有点不严谨 狐爸帮我看一下 如何写得更好?  发帖心情 Post By:2016/3/29 10:01:00 [只看该作者]

以下代码 写在销售单明细的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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/29 10:37:00 [只看该作者]

 没看懂你的逻辑,怎么不严谨?有什么问题?具体例子上传上来。


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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/3/29 11:18:00 [只看该作者]

销售明细单有两个字段 辅助数量 ,数量。辅助数量与数量有换算关系 1:3   ,如果输入了辅助数量,数量就自动产生了,如果在数量里输入,辅助数量根据换算也算出了 
在datachanegd 如何写代码?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/3/29 14:27:00 [只看该作者]

还是用afteredit 事件处理 解决了

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/3/29 15:58:00 [只看该作者]

上面的代码放在datachanged事件吗


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/29 16:10:00 [只看该作者]

是。

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/3/29 16:15:00 [只看该作者]

明白
多谢

 回到顶部