以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于取消的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47306)

--  作者:zyys2813
--  发布时间:2014/3/7 20:47:00
--  关于取消的问题
在窗口中新增一行,保存,再新增一行,撤销
出现:新增的第二行删除,但新增且已保存的第一行"出库数量"清空,再撤销一次又有了
查看帮助的 Validating 事件,要把"撤销"按钮的"执行验证"属性设为False即可,但还是不管用
"出库数量"的 Validating代码为

Dim c As DataRow = Tables("出库").Current.DataRow
If c.RowState = DataRowState.added Then
    If e.Form.Controls("出库数量").value > e.Form.Controls("库存数量").value Then
        MessageBox.Show("出库数量大于库存数量")
        e.Cancel = True
    End If
End If

撤销的代码为
Dim c As DataRow = Tables("出库").Current.DataRow
If c.RowState = DataRowState.Added Then
    c.Delete()
else
    DataTables("出库").RejectChanges()
end if

补充:只新增一行再撤销,没有问题
可能说的较乱,请大神帮忙,谢谢

[此贴子已经被作者于2014-3-7 20:53:57编辑过]

--  作者:有点甜
--  发布时间:2014/3/7 21:37:00
--  

 是问怎样才能让 第一行 的出库数量 保持不变?

 

 你看看你的出库数量是根据什么计算的,再看看 DataRowDeleted 事件写了什么代码


--  作者:zyys2813
--  发布时间:2014/3/8 8:57:00
--  
有点甜老师
出库数量是人工填写的,DataRowDeleted 事件 里没有代码

--  作者:狐狸爸爸
--  发布时间:2014/3/8 9:08:00
--  
Dim c As DataRow = Tables("出库").Current.DataRow
If c.RowState = DataRowState.added Then
    If e.Form.Controls("出库数量").value > e.Form.Controls("库存数量").value Then
        MessageBox.Show("出库数量大于库存数量")
        c("出库数量") = nothing
        e.Cancel = True
    End If
End If
[此贴子已经被作者于2014-3-8 9:08:50编辑过]

--  作者:zyys2813
--  发布时间:2014/3/8 16:54:00
--  
经过反复试验,可能是与 有多个控件的ValueChanged事件中 Select()到同一个控件造成的,

这样做的原因是不知道下拉窗口取值后,如何跳到另一个控件。

后来在下拉窗口中DoubleClick写

If Forms("窗口1").Opened Then

    Forms("窗口1").Controls("出库数量").Select()

End If

问题解决了,

不知道有没有别的方法。