以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]有关自定义函数调用(急用!!)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11873)

--  作者:exonjee
--  发布时间:2011/8/15 11:04:00
--  [原创]有关自定义函数调用(急用!!)

以下为自定义函数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
图片点击可在新窗口打开查看

--  作者:lihe60
--  发布时间:2011/8/15 11:05:00
--  

这么长,我要晕了。

 


--  作者:exonjee
--  发布时间:2011/8/15 11:12:00
--  

其实中间主要是给全局变量赋值,想请教自定义代码的用法,什么时候触发,在菜单中触发行吗?


--  作者:狐狸爸爸
--  发布时间:2011/8/15 11:19:00
--  

呵呵,能否简化一下问题,做个简单的例子,能体现出关键问题就行。

 

图片点击可在新窗口打开查看


--  作者:blackzhu
--  发布时间:2011/8/15 13:06:00
--  
要这么复杂做权限表?