以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口中数据调取上一行数据后重复的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=117205)

--  作者:lungby
--  发布时间:2018/4/8 19:39:00
--  窗口中数据调取上一行数据后重复的问题
请问,
①窗口中设置了打开后直接调取上一行的数据,但是想在保存时检查“委托编号”列是否重复,如果重复弹出提示,确认后返回重新打开窗口的状态,并清空委托编号一栏的内容,如何实现?


在DataColChanging中设置后,打开窗口就直接弹出错误,怎么办呢?

If e.DataCol.Name = "委托编号" Then
    Dim
 dr As DataRow 
    dr = e.
DataTable.Find("委托编号 = \'" & e.NewValue & "\'")
    
If dr IsNot Nothing Then
        MessageBox.Show(
"此委托号已经存在!")
        e.Cancel = 
True
    End
 If
End
 
If


②还是上面的问题,如果在窗口中设置了打开后直接调取上一行的数据,能否将指定列名为“委托编号”的数据清空?如何写代码?


请分别解答下,谢谢~


--  作者:有点甜
--  发布时间:2018/4/8 20:25:00
--  

贴出你【打开后直接调取上一行的数据】的代码。

 

或者,在你那段代码的前后加上不触发事件的代码,如 http://www.foxtable.com/webhelp/scr/2218.htm

 


--  作者:lungby
--  发布时间:2018/4/8 22:58:00
--  
If e.DataTable.DataRows.Count = 0 Then 
End If
Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) 
For Each dc As DataCol In e.DataTable.DataCols
    e.DataRow(dc.Name) = dr(dc.Name) 
Next

--  作者:有点甜
--  发布时间:2018/4/8 23:42:00
--  
Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1)
For Each dc As DataCol In e.DataTable.DataCols
    If dc.name <> "委托编号" Then
        e.DataRow(dc.Name) = dr(dc.Name)
    End If
Next