以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]打开项目的时延过长  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=63362)

--  作者:wumingrong1
--  发布时间:2015/1/19 15:55:00
--  [求助]打开项目的时延过长
我的项目在打开的过程中很慢、需要30多秒才能打开;不知道是什么原因。能不能帮我看看有没有提升空间

BeforeOpenProject中写有命令:


Dim s As String = "Provider=SQLOLEDB.1;Password=234596;Persist Security Info=True;User ID=w457wzx;Initial Catalog=网维中心管理系统;Data Source=61.235.105.92,100" \'赋予"s"对服务器数据库连接情况进行检测

If Connections.TryConnect(s) = False Then \'如果数据库连接不通,那么


    e.Cancel = True \'拒绝打开项目

    e.HideSplashForm = True \'关闭Foxtable的启动封面

    MessageBox.Show("无法连接到服务器,请检查网络或与管理员联系", "未连接提示",MessageBoxButtons.Ok,MessageBoxIcon.Warning,0, Windows.forms.MessageBoxOptions.ServiceNotification) \'弹出提示窗口

    

Else

    

    If Date.Today > new Date(2016, 12, 31) Then \'如果电脑日期大于 ****日期

        e.Cancel = True \'拒绝打开项目

        e.HideSplashForm = True \'关闭Foxtable的启动封面

        MessageBox.Show("该系统超过授权使用期限,请与开发者联系", "未授权提示",MessageBoxButtons.Ok,MessageBoxIcon.Warning,0, Windows.forms.MessageBoxOptions.ServiceNotification) \'弹出提示窗口

     

    End If

End If




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 Tables("系统维护").Current("系统维护") = True  Then \'如果电脑日期大于 ****日期


        MessageBox.Show("本系统于"&Tables("系统维护").Current("开始时间")&"至"&Tables("系统维护").Current("计划完成")&"期间进行维护,请该时间后再登录系统!!!", "系统维护提示",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

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

[此贴子已经被作者于2015-1-19 15:58:03编辑过]

--  作者:Bin
--  发布时间:2015/1/19 15:56:00
--  
外网数据源? 内网数据源?

加载的数据太多了. 
或者参考帮助的动态加载章节,选择适合自己的方式.

--  作者:有点甜
--  发布时间:2015/1/19 15:57:00
--  
 去掉 BeforeOpenProject 的代码呢?
--  作者:wumingrong1
--  发布时间:2015/1/19 16:04:00
--  
 去掉 BeforeOpenProject 的代码 还是一样,一点改善都没有

--  作者:有点甜
--  发布时间:2015/1/19 16:07:00
--  
以下是引用wumingrong1在2015-1-19 16:04:00的发言:
 去掉 BeforeOpenProject 的代码 还是一样,一点改善都没有

 

1、说明你的表多;

 

2、说明你加载的数量大;

 

3、你把 开发指南->动态加载 看一下


--  作者:lsy
--  发布时间:2015/1/19 17:36:00
--  
动态加载数据,非常好。

动态加载表,要增加很多判断,负担额外加重,得不偿失。

我现在宁愿慢一些,也要把表全加载进来,空表也好啊。

--  作者:wumingrong1
--  发布时间:2015/1/22 16:59:00
--  
我有几个外部表的数据库、如果我想实现当打开系统时只加载其中某一个数据库的表、而且只加载表先不加载数据;这样是不是打开项目的速度会变的很快?有没有解决方案?
--  作者:Bin
--  发布时间:2015/1/22 17:03:00
--  
是的,肯定会比现在快

解决方案帮助连接不是发给你了吗?

--  作者:wumingrong1
--  发布时间:2015/1/22 17:07:00
--  
好像没有看到如何对某个数据源进行区分加载的内容


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


--  作者:Bin
--  发布时间:2015/1/22 17:13:00
--  
你那些表不要加载,就按照帮助的做,在外部表设置里,设置加载条件不加载任何信息