以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  登录按钮的代码是这些,现在加载还是很慢,从点登陆到主窗口要15秒,我已经将部分表限制加载了还是一样。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125823)

--  作者:yetle
--  发布时间:2018/10/8 9:30:00
--  登录按钮的代码是这些,现在加载还是很慢,从点登陆到主窗口要15秒,我已经将部分表限制加载了还是一样。

Dim tx1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim user As String=tx1.text
Dim sss As String=e.Form.Controls("ComboBox2").text
Dim dept As String=e.Form.Controls("ComboBox3").text

 
Dim tx2 As WinForm.TextBox = e.Form.Controls("TextBox2")
Dim pows As String=tx2.text
Dim dl As WinForm.Button = e.Form.Controls("Button1")
Dim dt As DataTable=DataTables("用户表")
Dim dr As DataRow

If user="" Then
    MessageBox.show("请输入用户名称!","提示",MessageBoxButtons.OK,MessageBoxIcon.Error)
    Return
Else
    dr=dt.find("用户名称=\'" & user & "\'")
    If dr IsNot Nothing Then
        If pows=dr("密码") Then
            PopMessage("登陆成功","提示",PopIconEnum.Infomation,1)
           dr("登陆时间")=Date.Now
dr("登陆账套")=sss
dr.Save()
usna=user

pwsd = pows

dpt = dept

syscmd.project.open(ProjectFile,sss)

   e.Form.Close


 Return
      
        Else
            MessageBox.show("密码错误","提示")
            Return
        End If
        
    Else
        MessageBox.show("用户不存在!","提示")
        Return
    End If

End If

--  作者:有点甜
--  发布时间:2018/10/8 11:09:00
--  

去看看你afterOpenProject事件,看有什么耗时的代码,如果删除掉是否快速进入?


--  作者:yetle
--  发布时间:2018/10/8 11:39:00
--  

AfterOpenProject


Tables("生产计划").TopVisibleRow = 0
Forms("主窗口").Open()
Forms("精准报价").open()
MainTable=Tables("用户表")

If User.Type <> UserTypeEnum.Developer
    TableCaptionVisible = False
End If

If OpenFileArgs.count>0 Then
Else
Forms("登陆").Open()
If usna="" Then
syscmd.project.Exit()
Return
End If 
End If

If DataTables.Contains("报价明细") = True And DataTables.Contains("报价申请") = True And DataTables.Contains("物料资料") = True Then
Tables("物料资料").AllowEdit=False
Tables("报价明细").Cols("产品编号").DropForm ="产品录入"
Tables("报价明细").Cols("产品名称").DropForm ="产品录入"
Tables("报价申请").Cols("业务部_客户").DropForm = "客户"
End If

MainTable=Tables("用户表")
Dim w As Integer = sysinfo.ScreenWidth      
Dim h As Integer = Sysinfo.ScreenHeight      
With baseMainForm
.show
    .WindowState = Windows.Forms.FormWindowState.Normal
    .Width = 920                                     
    .Height = 640
 .Top=h\\10                       
 .left=w\\6
End With
Dim dr As DataRow=DataTables("用户表").find("用户名称=\'" & usna & "\'")
If dr IsNot Nothing Then


StatusBar.Message1= "用户:" & usna & "   " & "当前账套:" & dr("登陆账套")
End If 
StatusBar.Message2="  登陆日期:" & Date.Today
\' Tables("报价单.报价明细").Visible=False

\' Forms("主窗口").Open()
\' Forms("主窗口1").open()

--  作者:有点甜
--  发布时间:2018/10/8 11:58:00
--  

1、如果删除afterOpenProject一些【耗时】的代码,能否正常速度进入系统?

 

2、或者你做个例子上来测试,你贴出的代码无法排查错误。


--  作者:yetle
--  发布时间:2018/10/8 13:38:00
--  

BeforeLoadOuterTable(外部表)中设置代码:

Select Case e.DataTableName
    Case "表A","表B" \'表A和表B无条件加载
    Case "表C"
        If e.User.Type <> UserTypeEnum.Developer Then \'只有开发者才加载表C
            e.Cancel = True
        End If
    Case Else \'其他所有表默认都不加载
        e.Cancel =
True

End
Select



初始不加载表,是不是在打开窗口的afterload用 datatables("A")来引用加载?


--  作者:有点甜
--  发布时间:2018/10/8 14:23:00
--  
回复5楼,是的,在需要的时候datatables.load("表A")