Foxtable(狐表)用户栏目专家坐堂 → 如何禁止用命令增加行


  共有11854人关注过本帖树形打印复制链接

主题:如何禁止用命令增加行

帅哥哟,离线,有人找我吗?
sunnykorla
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:71 积分:702 威望:0 精华:0 注册:2010/8/29 20:29:00
如何禁止用命令增加行  发帖心情 Post By:2011/2/22 23:58:00 [只看该作者]

AfterOpenProject

DataTables("Title").AllowEdit = False

 

button1

ClickTables("Title").AddNew()

 

button2

ClickTables("Title").Current.Delete

 

无论点击button1 or 2 功能全部能够实现。

 

这个是不是有问题?

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:shiyan.rar


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/2/23 0:42:00 [只看该作者]

DataTables("Title").AllowEdit = False   记得只针对手工操作,不能禁止代码的执行。。。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/2/23 7:59:00 [只看该作者]

另外:表属性有“允许增加行”的选项,直接通过菜单设置也可以。

 回到顶部
帅哥哟,离线,有人找我吗?
狐哥
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2011/2/23 12:16:00 [只看该作者]

我是这样做的,参考一下,呵呵

 


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

 

增加行:

Dim r As Row = Tables("业务录入").Current
r.DataRow.Load() '重新加载此行的数据
If r("费用") = "关" OrElse Vars("用户组") = "业务员"  OrElse Vars("用户组") = "财务" Then
    Return
Else
    Dim dab As Table = Tables("业务录入.费用管理")
    Dim dd As Row = Tables("业务录入").current
    If dab.rows.count = 0 Then
        dab.addnew()
    Else
        Dim ColNames As String() = {"公司简称","类别"}
        Dim dr As Row = dab.Rows(dab.rows.count-1)
        dab.Redraw = False
        dim drr as row = dab.addnew()
        For Each ColName As String in ColNames
            drr(ColName) = dr(ColName)
        Next
        dab.redraw = true
    End If
End If

 

删除行:

Dim r As Row = Tables("业务录入").Current
r.DataRow.Load() '重新加载此行的数据
If r("费用") = "关" OrElse Vars("用户组") = "业务员" OrElse Vars("用户组") = "财务" Then
    Return
Else
    With Tables("业务录入.费用管理")
        If .Current IsNot Nothing Then
            If .current("收付编号") = "" Then
                .Current.Delete
            End If
        End If
    End With
    Dim dr As DataRow = Tables("业务录入").current.DataRow
    DataTables("业务录入").DataCols("费用").RaiseDataColChanged(dr)
End If

 

锁单:

Dim r As Row = Tables("业务录入").Current
r.DataRow.Load() '重新加载此行的数据
Dim cmd As New SQLCommand
cmd.C外部数据
cmd.CommandText = "Update {业务录入} Set 费用 = '关' Where [_Identify] = " & r("_Identify")
cmd.ExecuteNonQuery()
Tables("业务录入.费用管理").AllowEdit = False

 

解单:

If Vars("用户组") <> "经理" Then
    MessageBox.Show("你不能解锁!")
    Return
Else
    Dim r As Row = Tables("业务录入").Current
    r.DataRow.Load() '重新加载此行的数据
    Dim cmd As New SQLCommand
    cmd.C 外部数据
    cmd.CommandText = "Update {业务录入} Set 费用 = '开' Where [_Identify] = " & r("_Identify")
    cmd.ExecuteNonQuery()
    Tables("业务录入.费用管理").AllowEdit = True
End If

 

 

不知合不合理.反正达到要求了,哈哈


 

[此贴子已经被作者于2011-2-23 12:19:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sunnykorla
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:71 积分:702 威望:0 精华:0 注册:2010/8/29 20:29:00
  发帖心情 Post By:2011/2/23 14:18:00 [只看该作者]

目的是这样的,给一个编辑录入界面,为防止数据随意改变,设置表锁定,需要编辑时解锁表。如果表在锁定情况下依然可以增加和删除行,那就没有必要锁定了,这个就是最大的危险,操作不当,那数据库就不复存在了,这个是安全问题。表锁定,菜单是不起效的,为何不能让这样的命令代码也不起效。我个人认为这个问题值得考虑!!!

感谢狐哥!!学习了!!


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/2/23 14:40:00 [只看该作者]

可以自己删除菜单中的增加行和删除行的代码,自己写代码,先判断表是否锁定,如果没有锁定,再增加行或删除行。

 回到顶部
帅哥哟,离线,有人找我吗?
sunnykorla
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:71 积分:702 威望:0 精华:0 注册:2010/8/29 20:29:00
  发帖心情 Post By:2011/2/23 18:18:00 [只看该作者]

您的意思是判断DataTables or Tables 是否被锁定,然后执行。不过我记得好像DataTables or Tables 没有这样的属性,只有DataRow有,实验后可行。

谢谢!!!

请教:

除此之外还有没有什么办法能够判定DataTables or Tables 是否被锁定?


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/2/23 18:34:00 [只看该作者]

以下是引用sunnykorla在2011-2-23 18:18:00的发言:

您的意思是判断DataTables or Tables 是否被锁定,然后执行。不过我记得好像DataTables or Tables 没有这样的属性,只有DataRow有,实验后可行。

谢谢!!!

请教:

除此之外还有没有什么办法能够判定DataTables or Tables 是否被锁定?

If CurrentTable.DataTable.AllowEdit = True

     ............

end if


 回到顶部
帅哥哟,离线,有人找我吗?
sunnykorla
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:71 积分:702 威望:0 精华:0 注册:2010/8/29 20:29:00
  发帖心情 Post By:2011/2/23 18:44:00 [只看该作者]

以下是引用mr725在2011-2-23 18:34:00的发言:

If CurrentTable.DataTable.AllowEdit = True

     ............

end if

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:shiyan.rar
请教了,您给看看

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/2/23 21:11:00 [只看该作者]

应该是False,而不是True,你搞反了:

 

If CurrentTable.AllowEdit =  False Then
    MessageBox.Show("请点击开始编辑!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
Else
    Tables("Title").AddNew()
End If


 回到顶部
总数 11 1 2 下一页