Foxtable(狐表)用户栏目专家坐堂 → 导航快速切换时偶尔会报错


  共有2869人关注过本帖树形打印复制链接

主题:导航快速切换时偶尔会报错

帅哥哟,离线,有人找我吗?
qaz17909
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:766 积分:8756 威望:0 精华:0 注册:2017/1/26 14:38:00
导航快速切换时偶尔会报错  发帖心情 Post By:2018/10/24 17:01:00 [只看该作者]

用目录树做成导航主窗口,点击目录树节点,打开不同的窗口。正常速度切换是没有问题,但是如果几个节点之间点击的速度比较快就是切换的比较快的时候,偶尔会出现“不存在名称为“窗口_Table1”的Table!”提示错误,请问是为什么?后面的提示问题出现位置有时是窗口的AfterLoad有是目录树的NodeMouseClick。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/24 17:30:00 [只看该作者]

你代码有问题,请贴出你所写代码,或者做个实例发上来测试。

 回到顶部
帅哥哟,离线,有人找我吗?
qaz17909
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:766 积分:8756 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:766 积分:8756 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2018/10/25 14:08:00 [只看该作者]

现在错误提示是在窗口的AfterLoad,未将对象引用设置到对象的实例。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/25 14:22:00 [只看该作者]

窗口的AfterLoad代码呢

 回到顶部
帅哥哟,离线,有人找我吗?
qaz17909
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:766 积分:8756 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By: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 = "收件人|收件人电话|收件地址|快递公司及单号|协议客户|合同编号|应付费用|已付款|已开piao|付款情况"
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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/25 15:51:00 [只看该作者]

调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm

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

 回到顶部
帅哥哟,离线,有人找我吗?
qaz17909
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:766 积分:8756 威望:0 精华:0 注册:2017/1/26 14:38:00
  发帖心情 Post By:2018/11/3 19:15:00 [只看该作者]

提示:“报告发送已关闭,无法调用其中的空间“Table1””
是不是因为切换的太快,窗口已经切换到下一个窗口,但上一个程序中窗口的形成还未完成。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/4 21:31:00 [只看该作者]

实例发上来测试。

 回到顶部
总数 16 1 2 下一页