以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 当订购数量,超过计划量,如何防止离开当前编辑单元格 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=97420) |
||||
-- 作者:szsmall -- 发布时间:2017/3/11 23:52:00 -- 当订购数量,超过计划量,如何防止离开当前编辑单元格 一个采购系统,计划单明细和订购单明细关联。如果计划量10个,订购量输入11个时,如何禁止离开当前单元格。 在订购单明细DataColChanged ,用以下代码,单元格数值,还是可以离开。DataColChanging,因为未写入值,很难和计划单做对比,尤其是一个计划单对应多个订购单。所以想,先把值写进去,再根据未够数量判断,然后锁定在单元格,改好后才允许离开。 If e.DataCol.Name = "数量" Then Dim pr As DataRow =e.DataRow.GetParentRow("计划单明细") If pr("计划单未购数量") < 0 Then MessageBox.Show("订购量超过计划量") e.Cancel = True End If End If |
||||
-- 作者:y2287958 -- 发布时间:2017/3/12 0:03:00 -- http://www.foxtable.com/webhelp/scr/0617.htm |
||||
-- 作者:szsmall -- 发布时间:2017/3/12 1:37:00 -- ValidateEdit满足不了要求,现在希望录入订购数量时,只要计划单明细“未购数量”,为负数,就出现警告窗口,并留在单元格里。
|
||||
-- 作者:wyz20130512 -- 发布时间:2017/3/12 13:34:00 -- 订购单明细表的ValidateEdit事件: If e.Col.Name = "数量" Then Dim dr As DataRow = e.Row.DataRow.GetParentRow("计划单明细") If dr("未购数量") < 0 Then MessageBox.Show("订购量超过计划量") e.Cancel = True End If End If
[此贴子已经被作者于2017/3/12 13:34:56编辑过]
|
||||
-- 作者:szsmall -- 发布时间:2017/3/12 22:55:00 -- ValidateEdit,dr("未购数量")仍然是之前的值,并不是本次输入后,实时的未购量。 只好放在DataColChanged,数量变了后,再做判断。超了,恢复旧值。不知道这样会不会有其他问题 If e.DataCol.Name = "数量" Then Dim pr As DataRow =e.DataRow.GetParentRow("计划单明细") If pr("未购数量") < 0
Then MessageBox.Show("订购量超过计划量") e.DataRow("数量") = e.OldValue End If End If |
||||
-- 作者:有点色 -- 发布时间:2017/3/13 0:19:00 -- If e.Col.Name = "数量" Then Dim dr As DataRow = e.Row.DataRow.GetParentRow("计划单明细") If dr("未购数量")+e.Row("数量")-val(e.text) < 0 Then MessageBox.Show("订购量超过计划量") e.Cancel = True End If End If |