以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]订购数量,超过计划单数量时,如何才能弹窗警告  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84074)

--  作者:szsmall
--  发布时间:2016/4/22 15:32:00
--  [求助]订购数量,超过计划单数量时,如何才能弹窗警告
录入订购单,订购数量,超过计划单数量时,如何才能弹窗警告。

已购数量:IsNull(Sum(Child(计划订购).数量),0)+IsNull(Sum(Child(计划临时订购).数量),0)
未购数量:计划数量-已购数量
 

此主题相关图片如下:2.jpg
按此在新窗口浏览图片

此主题相关图片如下:3.jpg
按此在新窗口浏览图片
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table


--  作者:大红袍
--  发布时间:2016/4/22 15:51:00
--  

临时表DataColChanged事件

 

Select Case e.DataCol.name
    Case "产品名称", "规格型号", "数量"
        Dim filter As String = "材料名称 = \'" & e.DataRow("产品名称") & "\' and 规格型号 = \'" & e.DataRow("规格型号") & "\' and 计划单号 = \'" & e.DataRow("计划单号") & "\'"
        Dim count As Integer = DataTables("计划单明细").compute("sum(计划单未购数量)", filter)
        If count < 0 Then
            msgbox("已超过数量" & e.DataRow("数量") + count)
        End If
End Select


--  作者:szsmall
--  发布时间:2016/4/22 18:56:00
--  

可以放在ValidateEdit?初始订购量,是直接从计划单带出来,不会有错。但不需要这么多时,需要手动把量改少。担心会手误,所以设定采购量超过计划量时,出现警告。

 

临时表与计划单明细表,已经关联,可否用GetParentRow, 取得相关行后,判断未购数量是否<0,再弹窗。

 


图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2016/4/22 19:14:00
--  

Select Case e.Col.name
    Case "数量"
        Dim filter As String = "材料名称 = \'" & e.Row("产品名称") & "\' and 规格型号 = \'" & e.Row("规格型号") & "\' and 计划单号 = \'" & e.Row("计划单号") & "\'"
        Dim count As Integer = DataTables("计划单明细").compute("sum(计划单未购数量)", filter)
        If count - e.Row("数量") < 0 Then
            msgbox("已超过数量" & count)

            e.Cancel = true
        End If
End Select


--  作者:szsmall
--  发布时间:2016/5/4 12:10:00
--  

2楼代码,会弹窗警告,但数量还是会变。有没办法,不让变,维持原值。

(如输入10,超过,跳窗后,变回原值2)

 


图片点击可在新窗口打开查看此主题相关图片如下:temp.gif
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/5/4 12:21:00
--  

ValidateEdit事件啊

 

Select Case e.Col.name
    Case "数量"
        Dim filter As String = "材料名称 = \'" & e.Row("产品名称") & "\' and 规格型号 = \'" & e.Row("规格型号") & "\' and 计划单号 = \'" & e.Row("计划单号") & "\'"
        Dim count As Integer = DataTables("计划单明细").compute("sum(计划单未购数量)", filter)
        If count - e.Row("数量") < 0 Then
            msgbox("已超过数量" & count)

            e.Cancel = true
        End If
End Select