以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]BeforSaveDataRow事件的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=56906)

--  作者:lijin951
--  发布时间:2014/9/15 10:23:00
--  [求助]BeforSaveDataRow事件的问题
我有两张表,分别是库存表与订单表明细表,库存表有字段 ‘库存数量’ ,‘报警阀值’ ,‘型号规格’ , ‘供应商’ 要实现目标:
在保存订单明细表的时候BeforSaveDataRow事件会校验所下订单数量,
如果订单数量<0则 e.Cancel = True
如果订单数量>=0 并 小于库存表的报警阀值则给出提示框

问题是
1.如何给 变量(报警阀值) 赋值
2.如何让所赋值的 变量(报警阀值)是订单明细表里面的 ‘型号规格’ , ‘供应商’ 字段所对应的

我之前的代码不能讨论变量只能定义所有的库存数量小于6就报警,代码如下
If e.DataRow.isnull("销售价格") OrElse e.DataRow.isnull("订单数量") Then
    messagebox.show("尚有订单数量或销售价格未填写,不能保存." & vblf & "如果不适用未填写值的明细请删除后保存","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.cancel=True
Else
    If e.DataRow("库存数量") >= 0 And e.DataRow("库存数量") < 6 Then
        MessageBox.Show("有物料处于低库存状态,请及时补货","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        If e.DataRow("库存数量") < 0 Then
            If MessageBox.Show("有明细项目库存为负任然确定出货?","询问",MessageBoxButtons.YesNo,MessageBoxIcon.Warning) = DialogResult.No Then
                e.Cancel = True
            End If
        End If
    End If
End If


--  作者:有点甜
--  发布时间:2014/9/15 10:28:00
--  

直接用find函数查找,然后赋值

 

Dim fdr As DataRow = DataTables("库存表").Find("规格型号 = \'" & e.DataRow("规格型号") & "\' and 供应商 = \'" & e.DataRow("供应商") & "\'")

If fdr IsNot Nothing Then

    msgbox(fdr("报警阀指"))

End If

 

http://www.foxtable.com/help/topics/0396.htm