以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何解决删除多条记录时重复提示?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63781)

--  作者:wh420
--  发布时间:2015/1/28 16:00:00
--  如何解决删除多条记录时重复提示?

在表的BeforeDeleteDataRow事件中编写如下代码:

If e.DataRow("YNPay") OrElse e.DataRow("YNKP") Then
    e.Cancel = True
    MessageBox.Show("已付款或已开票记录不能删除!", "提示")
End If

结果执行删除操作时,选中多条记录删除,选中多少条就有多少遍这样的提示,请问如何解决?只提示一遍“已付款或已开票记录不能删除”即可

--  作者:Bin
--  发布时间:2015/1/28 16:02:00
--  
设计一个删除按钮.删除按钮前加入这句代码即可.
--  作者:wh420
--  发布时间:2015/1/28 16:03:00
--  
明白了,多谢


--  作者:wh420
--  发布时间:2015/1/28 16:11:00
--  
在右键快捷菜单中应该如何改写下列代码:
If e.DataRow("YNPay") OrElse e.DataRow("YNKP") Then
e.Cancel = True
MessageBox.Show("已付款或已开票记录不能删除!", "提示")
End If

--  作者:wh420
--  发布时间:2015/1/28 16:20:00
--  
老师帮忙 
--  作者:Bin
--  发布时间:2015/1/28 16:24:00
--  
你是要判断所有勾选的行,都满足这个条件才弹出? 
With CurrentTable
    dim del as Boolean=true
    For
 i As Integer = .TopPosition To .BottomPosition
       
If .Rows(i)("YNPay") OrElse .Rows(i)("YNKP") Then
           del=false
             exit for
End If
    Next
End
 With
if del=false then
   MessageBox.Show("已付款或已开票记录不能删除!", "提示")
end if


--  作者:有点甜
--  发布时间:2015/1/28 16:25:00
--  

If CurrentTable.Current("YNPay") OrElse CurrentTable.Current("YNKP") Then
    MessageBox.Show("已付款或已开票记录不能删除!", "提示")
End If


--  作者:wh420
--  发布时间:2015/1/28 16:53:00
--  
把代码段1和代码段2放在一起,小递逻辑搞不清楚了,要实现的功能就是:优先判断YNPay和YNKP为真的情况下只提示“已付款或已开票记录不能删除”(即选中记录中只要有条件为真的情况就只提示,不执行其他操作)否则执行代码段2。

代码段1:
If CurrentTable.Current("YNPay") OrElse CurrentTable.Current("YNKP") Then
    MessageBox.Show("已付款或已开票记录不能删除!", "提示")
End If

代码段2:
If Tables("Order").Compute("count(BBCheck)", "BBCheck = true") > 0 Then
    If MessageBox.Show("是否删除选中记录?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes
        DataTables("Order").DeleteFor("BBCheck=true")
    End If
Else
    Syscmd.Row.Delete()
End If


--  作者:有点甜
--  发布时间:2015/1/28 16:55:00
--  


If CurrentTable.Current("YNPay") OrElse CurrentTable.Current("YNKP") Then
    MessageBox.Show("已付款或已开票记录不能删除!", "提示")
    Return
End If


If Tables("Order").Compute("count(BBCheck)", "BBCheck = true") > 0 Then
    If MessageBox.Show("是否删除选中记录?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes
        DataTables("Order").DeleteFor("BBCheck=true")
    End If
Else
    Syscmd.Row.Delete()
End If
 


--  作者:wh420
--  发布时间:2015/1/28 17:04:00
--  
这样写如果选中两条记录的时候(一条记录YNPay=true,另一条记录为YNPay=false)结果还是被删除了。是不是得用循环来判断啊?