以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于按钮授权  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73034)

--  作者:fred
--  发布时间:2015/8/11 12:04:00
--  [求助]关于按钮授权
有一个表叫“按钮授权”
表中有两个字段:按钮名,用户名
按钮名有如下:员工信息,外销合同,采购合同
用户名:取值表来自员工表,取值字段和显示字段都是用户名,可同时取多个。

目的:对于一个按钮,用户名里有的人才可以看到这个按钮。

是不是在表事件AfterLoad里写代码?怎么写?

--  作者:大红袍
--  发布时间:2015/8/11 12:21:00
--  
For Each c As WinForm.Control In e.Form.Controls
    If typeof c Is winform.button Then
        If DataTables("表A").find("第一列 = \'\' and (\',\' & 第二列 & \',\') like \'" & user.name & "\'") IsNot Nothing Then
            c.Enabled = True
        Else
            c.Enabled = False
        End If
    End If
Next

--  作者:fred
--  发布时间:2015/8/11 15:39:00
--  
.NET Framework 版本:2.0.50727.5477
Foxtable 版本:2014.11.11.1
错误所在事件:表,ButtonRight,PrepareEdit
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。


--  作者:有点蓝
--  发布时间:2015/8/11 15:50:00
--  
If typeof c Is winform.button Then 下
加个 Dim b as WinForm.Button = c
把下面的c都改为b

--  作者:大红袍
--  发布时间:2015/8/11 15:52:00
--  

不要写到 PrepareEdit 事件,2楼的代码是写到afterLoad事件的啊。

 

 贴出你 PrepareEdit 事件的代码。


--  作者:fred
--  发布时间:2015/8/11 15:58:00
--  
.NET Framework 版本:2.0.50727.5477
Foxtable 版本:2014.11.11.1
错误所在事件:窗口,MainPage,AfterLoad
详细错误信息:
表达式包含不支持的运算符“&”。


不过,效果是达到了。只是提示上面这个错误。

--  作者:fred
--  发布时间:2015/8/11 16:15:00
--  
我是把上面代码放在主窗口(就是登录后第一个出现的窗口)的AfterLoad里了

请问这个报错是那个&出问题了呢?

--  作者:大红袍
--  发布时间:2015/8/11 16:51:00
--  

红色地方改一下

 

For Each c As WinForm.Control In e.Form.Controls
    If typeof c Is winform.button Then
        If DataTables("表A").find("第一列 = \'\' and (\',\' + 第二列 + \',\') like \'" & user.name & "\'") IsNot Nothing Then
            c.Enabled = True
        Else
            c.Enabled = False
        End If
    End If
Next


--  作者:fred
--  发布时间:2015/8/11 17:32:00
--  
EXCELLENT!!!
感谢!

--  作者:fred
--  发布时间:2015/8/12 16:31:00
--  
还是有问题,上传了例子。麻烦老师看一下。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编程测试_201508121628.zip