以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自定义用户登陆窗口  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149853)

--  作者:qaz17909
--  发布时间:2020/5/13 21:18:00
--  自定义用户登陆窗口
同一个项目文件,设计了自定义用户登陆窗口,有三台电脑,其中两台可以弹出自定义登陆窗口,但有一台就不行不弹出自定义登陆窗口而直接进入项目,这是为什么,以前一直正常,突然间这样子,windows系统重装了也不行。貌似AfterLoadProject里的代码没执行
[此贴子已经被作者于2020/5/13 21:21:49编辑过]

--  作者:有点蓝
--  发布时间:2020/5/14 8:43:00
--  
1、检查这台电脑安装的程序是不是缺少什么文件。把没有问题的电脑的程序复制到这台电脑试试

2、把所有项目事件的代码发上来看看

--  作者:qaz17909
--  发布时间:2020/5/14 19:22:00
--  
项目事件代码如下附件内
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目事件.txt



--  作者:有点蓝
--  发布时间:2020/5/14 20:24:00
--  
自行调试一下,看哪里的数据不符合预期:http://www.foxtable.com/webhelp/topics/1485.htm

AfterOpenProject

\'\'\'
\'数据源连接
msgbox("OpenFileargs.Count = " & OpenFileargs.Count)
msgbox("OrganizationName  = " & OrganizationName )
If OpenFileargs.Count = 0 Then
    Dim cmd22 As New SQLCommand
    Dim dt22 As DataTable
    cmd22.ConnectionName = "数据源名称"
    cmd22.CommandText = "SELECT * From {用户授权} where 单位名称 = \'" & OrganizationName & "\'"
    dt22 = cmd22.ExecuteReader
msgbox("dt22.DataRows.Count = " & dt22.DataRows.Count )
    If dt22.DataRows.Count > 0 Then
        Dim dr22 As DataRow = dt22.DataRows(0)
        Dim s1 As String = dr22("数据源_密码")
        Dim s2 As String = dr22("数据源_用户名")
        Dim s3 As String = dr22("数据源_数据库名称")
        Dim s4 As String = dr22("数据源_IP")
        Dim cs As String = "Provider=SQLOLEDB.1;Password=" & s1 & ";Persist Security Info=True;User ID=" & s2 & ";Initial Catalog=" & s3 & ";Data Source=" & s4
        Syscmd.Project.Open(ProjectFile,cs)
        Return
    End If
End If

\'用户验证
msgbox("C数据源名称") )
Dim cmd1 As New SQLCommand
Dim dt1 As DataTable
cmd1.ConnectionName = "数据源名称"
cmd1.CommandText = "SELECT * From {机器码}"
dt1 = cmd1.ExecuteReader
msgbox("ComputerId = " & ComputerId )
Dim dr1 As DataRow = dt1.SQLFind("机器码 = \'" & ComputerId & "\'")
msgbox("dr1 = " & (dr1 IsNot Nothing) )
If dr1 IsNot Nothing Then
    Dim dr2 As DataRow = dt1.SQLFind("机器码 = \'" & ComputerId & "\' AND 授权 = 1")
msgbox("dr2 = " & (dr2 IsNot Nothing) )
    If dr2 IsNot Nothing Then
        Dim cmd2 As New SQLCommand
        Dim dt2 As DataTable
        cmd2.ConnectionName = "数据源名称"
        cmd2.CommandText = "SELECT 单位名称,产品有效期 From {用户授权}"
        dt2 = cmd2.ExecuteReader
msgbox("dr2单位名称 = " & dr2("单位名称"))
        Dim dr3 As DataRow = dt2.SQLFind("单位名称 = \'" & dr2("单位名称") & "\'")
msgbox("dr3 = " & (dr3 IsNot Nothing) )
        If dr3 IsNot Nothing Then
            Dim d1 As Date = Date.Today
            Dim d2 As Date = dr3("产品有效期")
            If d2 < d1 Then
                MessageBox.Show("产品已过期!")
                Syscmd.Project.Exit()
                Return
            End If
            If Syscmd.Project.Update(False,False) = True \'自动升级
                Application.ReStart \'大版本不能使用这个重启,会有问题的,原因参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=140043
                Return
            End If
            Forms("用户登录").Open()
            If UserName = "" Then
                Syscmd.Project.Exit()
                Return \'这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
            End If
……