以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  特定用户加载特定的表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84415)

--  作者:kaituozhe
--  发布时间:2016/4/30 19:57:00
--  特定用户加载特定的表

以下代码用户是用SQL SERVER 2008数据源,目的是如果王登录但只有全部合同及合同转换两张表加载数据,其他都是空表,但是会提示错误,是什么原因,怎么修改?

If _UserName = "王五" Then
    For Each d As DataTable In DataTables
        If d.name = "全部合同" Or d.name = "合同转换" Then
            e.SelectString = "Sel ect * Fr om {d.name}"
        Else
            e.SelectString = "Se lect * Fr om {d.name} Where [_Identify] Is Null"
        End If
    Next
End If


--  作者:kaituozhe
--  发布时间:2016/4/30 20:19:00
--  

以下代码想全部合同及合同转换两个表加载数据,其他表为空表,但是其他表无法加载进来,该怎么修改?

If _UserName = "王五" Then
    If e.DataTableName = "全部合同" Or e.DataTableName = "合同转换" Then
        e.SelectString = "Select * Fr om {全部合同}"
        e.SelectString = "Select * Fr om {合同转换}"
    Else
        e.SelectString = "Select * Fr om {e.DataTableName} Where [_Identify] Is Null"
    End If
End If


--  作者:kaituozhe
--  发布时间:2016/5/1 6:45:00
--  

例子中的数据源为SQL server 2008数据源,目的是想实现如何如果张三则表A不是空表,其他都是空表;李四则表B不是空表,其他都是空表;该怎么修改

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:加载表.foxdb


--  作者:大红袍
--  发布时间:2016/5/2 13:38:00
--  

你不是吧,连最基础的还不会写。

 

If user.Name = "王五" Then
    If e.DataTableName = "全部合同" Or e.DataTableName = "合同转换" Then
        e.SelectString = "Select * Fr om {" & e.DataTableName & "}"
    Else
        e.SelectString = "Select * Fr om {" & e.DataTableName & "} where 1=2"

    End If
End If


--  作者:kaituozhe
--  发布时间:2016/5/2 18:41:00
--  
以下代码是想更进一步,在users中设置允许加载数据的表,在黄色部分提示错误,该怎么改进?
Dim dr As DataRow  = DataTables("Users").find("_UserName= \'" & DataTables("users").DataRow("Name") & "\'")
Dim nms1() As String
If dr IsNot Nothing Then
    nms1 = dr("可以打开的表").Split(",")
End If
If _userName = "王五" Then
    If nms1.Contains(dt.name ) = True Then
        e.SelectString = "Select * Fr  om {" & e.DataTableName & "}"
    Else
        e.SelectString = "Select * Fr om {" & e.DataTableName & "} where [_Identify] Is Null"
    End If
End If

--  作者:大红袍
--  发布时间:2016/5/2 20:14:00
--  

 在这个时间,DataTables所有的表都没加载。

 

 你应该在这个事件不加载任何表,然后在AfterOpenProject事件再加载需要的表。


--  作者:kaituozhe
--  发布时间:2016/5/2 21:17:00
--  
AfterOpenProject事件中黄色部分的代码该怎么写
--  作者:kaituozhe
--  发布时间:2016/5/2 21:55:00
--  
以下黄色代码怎么修改
\'Dim dr As DataRow  = DataTables("Users").find("_UserName= \'" & e.DataRow("Name") & "\'")
\'Dim nms1() As String
\'If dr IsNot Nothing Then
    \'nms1 = dr("可以打开的表").Split(",")
\'End If
\'If _UserName = "王五" Then
    \'For Each dt As DataTable In DataTables
        \'\'If nms1.Contains(dt.name ) = True Then
            \'If dt.name = "全部合同" Or dt.name = "合同转换" Then
            \'dt.LoadFilter = ""
            \'dt.Load()
        \'Else
            \'dt.LoadFilter = "[_Identify] Is Null"
            \'dt.Load()
        \'End If
    \'Next
\'End If

--  作者:Hyphen
--  发布时间:2016/5/3 8:52:00
--  
Dim dr As DataRow  = DataTables("Users").find("name= \'" & _UserName & "\'")
--  作者:kaituozhe
--  发布时间:2016/5/3 9:13:00
--  
以下代码提示错误,是什么原因形成的?   错误如下:无法将类型为“System.String[]”的对象强制转换为类型“System.Collections.Generic.List`1[System.String]”。
Dim dr As DataRow  = DataTables("Users").find("Name= \'" & _UserName & "\'")
Dim nms1  As list (of String)
If dr IsNot Nothing Then
    nms1 = dr("可以打开的表").Split(",")
End If
If _UserName = "王五" Then
    For Each dt As DataTable In DataTables
        If nms1.Contains(dt.name ) = True Then
            \'If dt.name = "全部合同" Or dt.name = "合同转换" Then
            dt.LoadFilter = ""
            dt.Load()
        Else
            dt.LoadFilter = "[_Identify] Is Null"
            dt.Load()
        End If
    Next
End If