以文本方式查看主题

-  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=126578)

--  作者:qaz17909
--  发布时间:2018/10/24 17:01:00
--  导航快速切换时偶尔会报错
用目录树做成导航主窗口,点击目录树节点,打开不同的窗口。正常速度切换是没有问题,但是如果几个节点之间点击的速度比较快就是切换的比较快的时候,偶尔会出现“不存在名称为“窗口_Table1”的Table!”提示错误,请问是为什么?后面的提示问题出现位置有时是窗口的AfterLoad有是目录树的NodeMouseClick。
--  作者:有点甜
--  发布时间:2018/10/24 17:30:00
--  
你代码有问题,请贴出你所写代码,或者做个实例发上来测试。
--  作者:qaz17909
--  发布时间:2018/10/25 11:17:00
--  
目录树点击节点的代码
Select Case e.Node.Text
Case "报告发送"
        If DataTables.Contains("报告信息") = False Then
            DataTables.Load("报告信息")
        End If
        MainTable = Tables("报告信息")
        Forms("报告发送").open()
        If Forms("报告发送").Opened Then
            Dim Filter As String = "[报告进度] = \'报告已批准\' AND [已打印] = 1 AND [已发送] = 0"
            With DataTables("报告发送_Table1")
                .LoadFilter = ""
                .LoadFilter = Filter
                .LoadTop = 50
                .LoadPage = 0
                .Loadover = "报告编号"
                .Load
                Forms("报告发送").Controls("TextBox页数页码").text = "1/" & DataTables("报告发送_Table1").Totalpages
            End With
            Tables("报告发送_Table1").AutoSizeCols()
        End If
End select

--  作者:有点蓝
--  发布时间:2018/10/25 11:23:00
--  
试试

Select Case e.Node.Text
    Case "报告发送"
        If DataTables.Contains("报告信息") = False Then
            DataTables.Load("报告信息")
            Application.DoEvents()
        End If
        MainTable = Tables("报告信息")
        If Forms("报告发送").Opened = False Then
            Forms("报告发送").open()
            Application.DoEvents()
        End If
        If Forms("报告发送").Opened Then
            Dim Filter As String = "[报告进度] = \'报告已批准\' AND [已打印] = 1 AND [已发送] = 0"
            With DataTables("报告发送_Table1")
                .LoadFilter = ""
                .LoadFilter = Filter
                .LoadTop = 50
                .LoadPage = 0
                .Loadover = "报告编号"
                .Load
                Forms("报告发送").Controls("TextBox页数页码").text = "1/" & DataTables("报告发送_Table1").Totalpages
            End With
            Tables("报告发送_Table1").AutoSizeCols()
        End If
End Select

--  作者:qaz17909
--  发布时间:2018/10/25 14:08:00
--  
现在错误提示是在窗口的AfterLoad,未将对象引用设置到对象的实例。
--  作者:有点蓝
--  发布时间:2018/10/25 14:22:00
--  
窗口的AfterLoad代码呢
--  作者:qaz17909
--  发布时间:2018/10/25 15:40:00
--  
Dim t As Table = Tables("报告发送_Table1")
t.DataTable.GlobalHandler.BeforeShowContextMenu = True
t.ExtendLastCol = True
t.Cols.Frozen = 1
t.Sort = "报告编号"
Dim tb1 As WinForm.Table = e.Form.Controls("Table1")
For Each c As Col In tb1.Table.Cols
    c.TextAlign = TextAlignEnum.Center
Next

t.Cols("报告编号").AllowEdit = False
t.Cols("样品类别").AllowEdit = False
t.Cols("检测类别").AllowEdit = False
t.Cols("送样方式").AllowEdit = False
t.Cols("委托方").AllowEdit = False

Dim rgd1 As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
rgd1.Table = t\'指定绑定表
rgd1.Columns = "报告编号|样品类别|检测类别|归档类别|送样方式|委托方|委托方地址|联系人|联系人电话|报告发送方式|收件人单位|收件地址|收件人|收件人电话|受理备注|接样人|受理完成日期|编制人|编制日期|审核人|审核日期|批准人|批准日期"
rgd1.Build() \'重新生成记录窗口
Dim g1 = Forms("报告发送").Controls("RecordGrid1").BaseControl
g1.AutoSizeRows
Dim rgd2 As WinForm.RecordGrid = e.Form.Controls("RecordGrid2")
rgd2.Table = t\'指定绑定表
rgd2.Columns = "收件人|收件人电话|收件地址|快递公司及单号|协议客户|合同编号|应付费用|已付款|已开票|付款情况"
rgd2.Build() \'重新生成记录窗口
Dim g2 = Forms("报告发送").Controls("RecordGrid2").BaseControl
g2.AutoSizeRows
Dim rgd3 As WinForm.RecordGrid = e.Form.Controls("RecordGrid3")
rgd3.Table = t\'指定绑定表
rgd3.Columns = "结果已通知|客户通知反馈报告发送方式|客户通知反馈具体要求|客户通知反馈其他"
rgd3.Build() \'重新生成记录窗口
Dim g3 = Forms("报告发送").Controls("RecordGrid3").BaseControl
g3.AutoSizeRows

If User.Group = "质控综合部" Or user.Group = "管理层" Or User.Group = "行政部" Then
    Return
Else
    Tables("报告发送_Table1").AllowEdit = False
    For Each c As WinForm.Control In e.Form.Controls
        If Typeof c Is WinForm.Button Then
            c.Enabled = False
        End If
    Next
End If

--  作者:有点蓝
--  发布时间:2018/10/25 15:51:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm

看看运行到哪一句代码出错

--  作者:qaz17909
--  发布时间:2018/11/3 19:15:00
--  
提示:“报告发送已关闭,无法调用其中的空间“Table1””
是不是因为切换的太快,窗口已经切换到下一个窗口,但上一个程序中窗口的形成还未完成。

--  作者:有点甜
--  发布时间:2018/11/4 21:31:00
--  
实例发上来测试。