以下为自定义函数competrnce_read代码
Dim dr As DataRow
Dim bm As String=Args(0)
Dim allcol,editcol,repeatfill As String
dr=DataTables("用户权限").find("用户='" & _username & "' and 表名='" & bm & "' and 停用=0")
If dr IsNot Nothing Then
Vars("QX_gridname")=dr("表名")
Vars("QX_view")=dr("视图")
Vars("QX_opengrid")=dr("打开表")
Vars("QX_editgrid")=dr("编辑表")
Vars("QX_addrow")=dr("新增行")
Vars("QX_deleterow")=dr("删除行")
Vars("QX_addmultirow")=dr("新增多行")
Vars("QX_deletemultirow")=dr("删除多行")
Vars("QX_hidecol")=dr("隐藏列")
Vars("QX_unhidecol")=dr("取消隐藏列")
Vars("QX_lockrow")=dr("锁定行")
Vars("QX_unlockrow")=dr("取消锁定行")
Vars("QX_copy")=dr("复制")
Vars("QX_paste")=dr("粘贴")
Vars("QX_clone")=dr("克隆行")
Vars("QX_export")=dr("导出")
Vars("QX_review")=dr("审核")
Vars("QX_printlabel")=dr("标签打印")
Vars("QX_extract")=dr("提取数据")
Vars("QX_zandian")=dr("站点")
editcol=dr("可编辑列")
repeatfill=dr("不可填充列")
If vars("QX_opengrid")=True Then
MainTable=Tables(vars("QX_gridname"))
DataTables(vars("QX_gridname")).allowedit=Vars("QX_editgrid")
If vars("QX_view")<>Nothing Then
Tables(vars("QX_gridname")).stopredraw
Tables(vars("QX_gridname")).openview(Vars("QX_view"))
Tables(vars("QX_gridname")).resumeredraw
End If
If Vars("QX_editgrid")=True Then
If editcol IsNot Nothing
Dim names As New List(Of String)
For Each dc As DataCol In DataTables(vars("QX_gridname")).DataCols
names.add(dc.name)
Next
Dim t1(DataTables(vars("QX_gridname")).DataCols.count-1) As String
For i As Integer=0 To DataTables(vars("QX_gridname")).DataCols.count-1
t1(i)=names(i)
Next
editcol="""" & editcol.replace(vbcrlf,""",""") & """"
DataTables(vars("QX_gridname")).allowedit=True
Tables(vars("QX_gridname")).allowedit=True
For k As Integer=0 To t1.length-1
Select Case t1(k)
Case editcol
DataTables(vars("QX_gridname")).DataCols(t1(k)).allowedit=True
Tables(vars("QX_gridname")).Cols(t1(k)).allowedit=True
Case Else
DataTables(vars("QX_gridname")).DataCols(t1(k)).allowedit=False
Tables(vars("QX_gridname")).Cols(t1(k)).allowedit=False
End Select
Next
End If
End If
If Vars("QX_zandian")="管理员" Then
Select Case vars("QX_gridname")
Case "分组权限","用户权限"
For Each dc As DataCol In DataTables(vars("QX_gridname")).DataCols
If dc.name<>"操作记录" Then
DataTables(vars("QX_gridname")).DataCols(dc.name).allowedit=True
Tables(vars("QX_gridname")).Cols(dc.name).allowedit=True
Else
DataTables(vars("QX_gridname")).DataCols(dc.name).allowedit=False
Tables(vars("QX_gridname")).Cols(dc.name).allowedit=False
End If
Next
End Select
End If
Else
messagebox.show("您无权限打开所选表,请和系统管理员联系!","提示")
End If
Else
messagebox.show("当前用户权限未分配,请检查权限分配表,和系统管理员联系!","提示")
End If
问题:
1、以上自定义代码有问题吗?自定义函数据使用时应注意些什么?
2、我在调用此函数时很多定义的权限不能用,比如复制权限:(看图片)
在首次打开程序调用时复制数据会卡住,用ctrl+alt+del按下后然后重新再复制才可以复制数据,而且以后复制的数据都一直是第一次复制时的数据。
3、在自定义菜单标准按钮click事件中写入以下代码,调用自定义函数据,发现很多定义的权限不起作用,如编辑列等权限,全局变量赋值没有问题的,都可以正常读取值。
Functions.Execute("competence_read","外延")
请贺老师和高手帮忙看下,谢谢!
此主题相关图片如下:img1.jpg