以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何返回一个变量表示表加载成功了  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79369)

--  作者:happyft
--  发布时间:2015/12/29 22:26:00
--  如何返回一个变量表示表加载成功了
当打开项目时,会先加载几个其础表,但如果这几个基础表因为网络等原因没有全部加载成功,此时运行打开窗口的代码就会接连着弹出一堆的错误,如何才能获取某个表是否加载成功?
谢谢!

--  作者:大红袍
--  发布时间:2015/12/29 22:55:00
--  

可以判断是否存在此表,没加载,就先加载。

 

If DataTables.Contains("表A") Then

 

End If

 

 


--  作者:HappyFt
--  发布时间:2015/12/30 9:33:00
--  
我不是指表没加载导致出错,而是在运行比如DataTables("表A").Load()后网络突然断开或其他原因导致表A并没有成功加载,所以后面再运行的代码就出错了, DataTables.Contains("表A")能判断这种情况吗? 
--  作者:大红袍
--  发布时间:2015/12/30 10:09:00
--  

可以判断load前后的数据变化。如

 

Dim count As Integer = dt.DataRows.Count

dt.Load

If dt.DataRows.Count = 0 OrElse count <> dt.DataRows.Count Then

 

End If


--  作者:HappyFt
--  发布时间:2016/4/18 20:50:00
--  
在beforeOpenproject中用了如下的代码,其中数组中的表是beforeloadouttable中默认全部加载数据进来的几个基础表

\'---如果有一个基础表没有加载成功禁止打开项目
Dim tbs() As String = "MoGroup|dtbSet|ftbSet|sqtb|sqtb2|QtbSet|Argtb|Caption".split("|")
For i As Integer = 0 To tbs.Length - 1
    If Tables(tbs(i)).Rows.Count = 0 Then
        msgbox("基础表没有加载成功,请重新打开项目!")
        e.Cancel = True
        Exit For
    End If
Next

上面的代码想实现如果某一个表的行数为0说明没有加载成功,就不能打开项目,这种写法是否正确
有两个问题
1、上面的exit for用于退出循环,在那个位置是否会出错,因为前面执行了e.cancel = true, 是否后面还需要写代码?
2、如果某个表有30行,会不会出现网络出故障只加载了10行这种情形出现,那要怎么办呢?每个基础表的行数未加载时是不知道的

谢谢!



--  作者:大红袍
--  发布时间:2016/4/18 20:53:00
--  

1、beforeOpenProject不能用Tables,那时候还没生成表;必须等到AfterOpenProject

 

2、单独做一个表记录要加载的内容,不满足就退出。


--  作者:HappyFt
--  发布时间:2016/4/18 21:26:00
--  
那是否就所相同的代码移动到afteropenproject 的最前面?
Dim tbs() As String = "MoGroup|dtbSet|ftbSet|sqtb|sqtb2|QtbSet|Argtb|Caption".split("|")
For i As Integer = 0 To tbs.Length - 1
    If Tables(tbs(i)).Rows.Count = 0 Then
        msgbox("基础表没有加载成功,请重新打开项目!")
        System.Diagnostics.Process.GetProcessesByName("Newsource")(0).Kill  \'直接结束进程退出
        Exit For
    End If
Next
还有一个同样的问题,只要有一个表没有加载成功,就退出,那exit for这句还要不?

--  作者:大红袍
--  发布时间:2016/4/18 21:28:00
--  

 可以放在最前。

 

 Exit For 要不要都没关系,已经kill掉了。