以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  非管理员不能删除数据,但是通过窗口按钮可以删除数据怎么弄?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=147712)

--  作者:yacity
--  发布时间:2020/3/22 18:41:00
--  非管理员不能删除数据,但是通过窗口按钮可以删除数据怎么弄?
如标题。非管理员不能删除数据,但是通过窗口的取消按钮可以删除当前新增的行怎么弄?


图片点击可在新窗口打开查看此主题相关图片如下:9.jpg
图片点击可在新窗口打开查看


客户信息表(kehu)

BeforeDeleteDataRow 事件


If  User.name<> "管理员" Then
    e.Cancel = True \'那么取消输入并提示用户
    Messagebox.Show("请联系管理员删除客户信息","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

--  作者:有点蓝
--  发布时间:2020/3/22 22:29:00
--  
取消使用的是RejectChanges,这个不会触发BeforeDeleteDataRow 事件,撤销是另外一种行为,不是删除。

直接在取消按钮里判断

if User.name<> "管理员" then
    e.Cancel = True \'那么取消输入并提示用户
    Messagebox.Show("请联系管理员删除客户信息","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
end if
这里是撤销的代码

--  作者:yacity
--  发布时间:2020/3/24 9:31:00
--  
因为打开窗口后,立马新增一行才能在窗口里输入数据。
窗口 AfterLoad 事件,Tables("kehu").AddNew() 
那么对应的,如果窗口控件 触发确认按钮,则保存这一行。如果取消则删除这一行。(比如录入新客户信息的时候发现重复了,肯定要选取消按钮,肯定要删除这一行)
取消的按钮事件
Tables("kehu").Current.Delete()
e.Form.Close()


但是客户信息表(kehu)  BeforeDeleteDataRow 事件

If  User.name<> "管理员" Then
    e.Cancel = True \'那么取消输入并提示用户
    Messagebox.Show("请联系管理员删除客户信息","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

这时候只有管理员才能在点取消按钮的时候完成Tables("kehu").Current.Delete() 这是不对的。
目标:只有管理员才能在表中删除数据,但是窗口中任何一个人都可以通过取消按钮来删除当前不需要的这一行,如何实现?

--  作者:yacity
--  发布时间:2020/3/24 9:36:00
--  
如一楼的图片,因为取消的时候不能删除当前录入错误的数据,所以经过多次“取消”后,会出现很多空数据行,或者错误的数据。这样是不对的。
--  作者:有点蓝
--  发布时间:2020/3/24 10:28:00
--  
取消按钮

Dim r As Row = Tables("kehu").Current
If r IsNot Nothing Then
    If r.DataRow.RowState = DataRowState.Added
        systemrerady = False
        r.Delete
        systemrerady = True
    End If
End If