以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 项目无法打开  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=60164)

--  作者:wumingrong1
--  发布时间:2014/11/19 14:51:00
--  [求助] 项目无法打开
1、我在项目的全局代码中写有下图内容;2、我在登录窗口的登录按钮写有以下命令;3、如果我在登录按钮中写有 红色 部分命令,项目就无法打开、如果把它删掉就能打开。请问是什么原因?



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


Dim UserName As String = e.Form.Controls("UserName").Value
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr As DataRow
Dim fr As DataRow = DataTables("users").SQLFind("Name = \'" & userName & "\'")
cmd.C
If UserName = ""  Then
    Messagebox.show("请输入用户名!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If

cmd.CommandText = "Select * From {Users} Where [Name] = \'" & UserName & "\'"
dt = cmd.ExecuteReader
If dt.DataRows.Count = 0 Then
    Messagebox.show("此用户不存在!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If

If Date.Today > fr("停用日期") Then
    
    Messagebox.show("当前用户使用该系统的期限已经过期,请与管理员联系","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    \'Syscmd.Project.Exit() \'正常退出飞狐
    Return \'这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
Else
    
    dr = dt.DataRows(0)
    If e.Form.Controls("PassWord").Value = dr("Password") Then
        _UserName = UserName
        _UserGroup = dr("Group")
        _User维护权限 = dr("维护权限")
        _User分公司 = dr("分公司")
        
        e.Form.Close
    Else
        Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
    
    
    
End If



If User.Type = UserTypeEnum.Developer AndAlso User.Type = UserTypeEnum.Administrator AndAlso _UserGroup = "特级管理员" Then
    
    ConfigBar.Items("开发按钮").Visible =  True
    ConfigBar.Items("切换分公司").Visible =  True
    RibbonTabs("技术资料").visible = True
    RibbonTabs("专项工作").visible = True
    RibbonTabs("材料管理").visible = True
    RibbonTabs("日常工作").visible = True
    
    RibbonTabs("台帐管理").Groups("电源台帐").Items("电源台帐").Visible = True
    RibbonTabs("台帐管理").Groups("互联网台帐").Items("互联网台帐").Visible = True
    
    
Else
    
    ConfigBar.Items("开发按钮").Visible = False
    ConfigBar.Items("切换分公司").Visible = False
    RibbonTabs("技术资料").visible = False
    RibbonTabs("专项工作").visible = False
    RibbonTabs("材料管理").visible = False
    RibbonTabs("日常工作").visible = False
    
    RibbonTabs("台帐管理").Groups("电源台帐").Items("电源台帐").Visible = False
    RibbonTabs("台帐管理").Groups("互联网台帐").Items("互联网台帐").Visible = False
    
End If

--  作者:有点甜
--  发布时间:2014/11/19 14:53:00
--  

 报什么错?单独运行这段代码

 

    ConfigBar.Items("开发按钮").Visible = False

    ConfigBar.Items("切换分公司").Visible = False
    RibbonTabs("技术资料").visible = False
    RibbonTabs("专项工作").visible = False
    RibbonTabs("材料管理").visible = False
    RibbonTabs("日常工作").visible = False
    
    RibbonTabs("台帐管理").Groups("电源台帐").Items("电源台帐").Visible = False
    RibbonTabs("台帐管理").Groups("互联网台帐").Items("互联网台帐").Visible = False

--  作者:wumingrong1
--  发布时间:2014/11/19 15:12:00
--  
知道啦,是RibbonTabs("日常工作").visible = False写错了、应该是  RibbonTabs("日常管理").visible = False

另外:
由于“OLT设备用户端口数据表”和“Itellin用户数据表”数据量比较大;在打开项目是会影响打开速度;我想在打开项目时先不加载这两个表;所以在项目的BeforeLoadOuterTable属性中写有以下命令,


If e.DataTableName = "OLT设备用户端口数据表" Then
    e.SelectString = "Select * From {OLT设备用户端口数据表} Where [_Identify] Is Null"
End If

If e.DataTableName = "Itellin用户数据表" Then
    e.SelectString = "Select * From {Itellin用户数据表} Where [_Identify] Is Null"
End If

可是登录后还是看到加载了这两个表的数据、是不是我的命令写错啦?




--  作者:有点甜
--  发布时间:2014/11/19 15:14:00
--  

1、看表名是否写错了;

 

2、看afteropenproject是否写了重新加载的代码 LoadFilter 和 Load


--  作者:wumingrong1
--  发布时间:2014/11/19 15:31:00
--  
表名没有错

我把这个命令写在登录按钮中应该也是可以的吧?

[此贴子已经被作者于2014-11-19 15:32:05编辑过]

--  作者:有点甜
--  发布时间:2014/11/19 15:32:00
--  
以下是引用wumingrong1在2014-11-19 15:31:00的发言:
我把这个命令写在登录按钮中应该也是可以的吧?

 

什么意思?如果不想加载数据,就不能 设置 Datatables("表A").Load


--  作者:wumingrong1
--  发布时间:2014/11/19 15:35:00
--  
表名没错、在afteropenproject中写了以下命令;好像没有重新加载的命令


Tables("本机注册表").Rows(0)("机器码") = ComputerId \'在"本机注册表""机器码"列第一行填入机器码
DataTables("本机注册表").Save()


Dim r As Row = Tables("本机注册表").Rows(0) \'r代表"本机注册表"第一行
Dim jqm As DataRow = DataTables("系统注册信息表").Find("机器码 = \'" & r("机器码") & "\'") \'fdr代表"系统注册信息表"的机器码=r表的机器码
Dim zcm As DataRow = DataTables("系统注册信息表").Find("使用授权 = \'FALSE \'") \'fdr代表"系统注册信息表"的机器码=r表的机器码

If  jqm Is Nothing    Then \'如果"本机注册表"的"机器码"与"系统注册信息表"的"机器码"列没有相同内容,那么
    MainTable = Tables("系统注册信息表") \'打开"***"表
    Forms("填写申请资料窗口").Open() \'打开"***"窗口
    
Else
    
    If jqm IsNot Nothing  AndAlso  jqm("使用授权") = "FALSE"  Then \'如果"系统注册信息表"的"使用授权"为"FALSE",那么
        MessageBox.Show("管理员还未完成对本机的授权,请与管理员联系", "未授权提示",MessageBoxButtons.Ok,MessageBoxIcon.Warning,0, Windows.forms.MessageBoxOptions.ServiceNotification) \'弹出提示窗口
        Syscmd.Project.Exit() \'正常退出飞狐
        Return \'这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
        
    Else
        
        If jqm IsNot Nothing AndAlso  jqm("使用授权") = "TRUE"  AndAlso jqm("截止日期") < Date.Today Then
            MessageBox.Show("本计算机使用该软件的期限已经过期,请与管理员联系", "未授权提示",MessageBoxButtons.Ok,MessageBoxIcon.Warning,0, Windows.forms.MessageBoxOptions.ServiceNotification) \'弹出提示窗口
            Syscmd.Project.Exit() \'正常退出飞狐
            Return \'这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
            
        Else
            If jqm IsNot Nothing AndAlso  jqm("使用授权") = "FALSE"  AndAlso jqm("截止日期") >= Date.Today Then
                MessageBox.Show("管理员还未完成对本机的授权,请与管理员联系", "未授权提示",MessageBoxButtons.Ok,MessageBoxIcon.Warning,0, Windows.forms.MessageBoxOptions.ServiceNotification) \'弹出提示窗口
                Syscmd.Project.Exit() \'正常退出飞狐
                Return \'这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
                
            Else
                
                
                If Syscmd.Project.Update(False,False) = False Then \'如果没有升级(False,True)
                    Forms("用户登录").Open() \'打开 用户登录 窗口
                    If _UserName = "" Then \'如果用户名= 空
                        system.diagnostics.process.GetProcessesByName("foxtable")(0).kill
                    End If
                Else
                    system.diagnostics.process.GetProcessesByName("foxtable")(0).kill
                End If
                
                
            End If
            
            
            
            Applicati \'系统抬头显示该名称
            
            MainTable = Tables("主页") \'打开"主页"表
            
            Forms("主页背景窗口").Open() \'打开"主窗口(主页)"窗口
            
            For Each u As Row In Tables("本机注册表").Rows
                Dim dru As DataRow = DataTables("系统注册信息表").Find("机器码 = \'" & u("机器码") & "\'")
                If dru IsNot Nothing Then
                    For Each s As String In "截止日期".Split("|")
                        u(s) = dru(s)
                    Next
                    
                End If
            Next
            
        End If
    End If
End If

--  作者:有点甜
--  发布时间:2014/11/19 15:36:00
--  
那你看一下登陆窗口的事件代码,以及LoadUserSetting的事件代码
--  作者:wumingrong1
--  发布时间:2014/11/19 15:40:00
--  
登录窗口是写有加载表数据命令,我该怎么改才能让他不加载以上两个表的数据呢?

“OLT设备用户端口数据表”和“Itellin用户数据表”

If User.Type <> UserTypeEnum.Developer AndAlso User.Type <> UserTypeEnum.Administrator AndAlso _UserGroup <> "特级管理员"  AndAlso _UserGroup <> "省公司"  Then
    
    
    Dim fdr As DataRow = DataTables("Users").SQLFind("Name = \'" & _userName & "\'")
    If fdr IsNot Nothing Then
        _user分公司 = fdr("分公司")
    End If
    For Each dt1 As DataTable In DataTables
        If dt1.DataCols.Contains("分公司") Then
            dt1.GlobalHandler.DataRowAdded = True
            dt1.LoadFilter = "分公司 = \'" & _user分公司 & "\'" \'只加载分公司=当前用户"分公司"列所属分公司内容
            dt1.Load
        End If
    Next
    
    
Else
    
    For Each dt1 As DataTable In DataTables
        If dt1.DataCols.Contains("分公司") Then
            dt1.GlobalHandler.DataRowAdded = True
            dt1.LoadFilter = "分公司 <> \'\'" \'加载分公司列不等于"空"
            
            dt1.Load
        End If
    Next
       
End If

--  作者:有点甜
--  发布时间:2014/11/19 15:48:00
--  
For Each dt1 As DataTable In DataTables
    If dt1.Name <> "OLT设备用户端口数据表" AndAlso dt1.Name <> "Itellin用户数据表" AndAlso dt1.DataCols.Contains("分公司") Then
        dt1.GlobalHandler.DataRowAdded = True
        dt1.LoadFilter = "分公司 = \'" & _user分公司 & "\'" \'只加载分公司=当前用户"分公司"列所属分公司内容
        dt1.Load
    End If
Next