以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 出现了查询处理器用尽了堆栈空间的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49018) |
||
-- 作者:yankunhao -- 发布时间:2014/4/10 17:30:00 -- 出现了查询处理器用尽了堆栈空间的问题 我在一个"obas_part1"表的AfterLoad事件中写有如下代码:
DataTables("obas_part1").DataRows.Count > 0 Then
现在"obas_part1"表当加载行约9000多行时会提示如下错误信息,请问是什么问题?应该如何做呢?
.NET Framework 版本:2.0.50727.3655If |
||
-- 作者:Bin -- 发布时间:2014/4/10 17:38:00 -- IDS 太长了,不可以. 9000多条,这不科学.你分页加载吧
|
||
-- 作者:yankunhao -- 发布时间:2014/4/10 19:30:00 -- 请问如果真的要一次过显示的话,有没办法? |
||
-- 作者:有点甜 -- 发布时间:2014/4/10 20:37:00 -- 以下是引用yankunhao在2014-4-10 19:30:00的发言:
请问如果真的要一次过显示的话,有没办法?
既然你的代码写在afterload事件里,那完全可以这样写代码吧?
Dim filter As String = DataTables("obas_part1").LoadFilter DataTables("半成品查询表").LoadFilter = "主键 in (select 主键 from {父表} where " & IIF(filter>"",filter,"1=1") & ")" |
||
-- 作者:yankunhao -- 发布时间:2014/4/11 8:55:00 -- 以下是引用有点甜在2014-4-10 20:37:00的发言:
既然你的代码写在afterload事件里,那完全可以这样写代码吧?
Dim filter As String = DataTables("obas_part1").LoadFilter DataTables("半成品查询表").LoadFilter = "主键 in (select 主键 from {父表} where " & IIF(filter>"",filter,"1=1") & ")"谢谢你的方法,不过经过测试,你的这个方法还是一样的错误提示!
我现在用以下的代码,就没出错提示,那是不是说明如果 ids 超过来String字符串类的最大长度,才会提示出错,从我的测试来看一次加载9000多行数据是可行的,问题是我想知道是不是ids变量超过来String字符串类的最大长度,还是LoadFilter不能太长(最多为多少?)那String字符串类的最大长度是多少?( 但说明里不是说:
)有没一个更科学的判断办法?
Select Case DataTables("obas_part1").DataRows.Count
[此贴子已经被作者于2014-4-11 8:59:09编辑过]
|
||
-- 作者:Bin -- 发布时间:2014/4/11 8:58:00 -- 应该是 SQL 加载条件语句不允许这么长. 你还是采取分页加载吧. 效率又高,何乐而不为 |
||
-- 作者:yankunhao -- 发布时间:2014/4/11 9:09:00 -- 以下是引用Bin在2014-4-11 8:58:00的发言:
应该是 SQL 加载条件语句不允许这么长. 你还是采取分页加载吧. 效率又高,何乐而不为
分页加载如何写呢?因为我是两个表的加载,先加载的为子表,后加载的为父表,就是说父表是用户看不见的,用户只是看到子表,而了表的一些字段是用表达式的,表达式是引用父表的数据,所以当用户需要查子表时,他会根据我给的加载树,选择加载子表的数据,当加载完子表数据时,再去由程序根据条件加载父表的数据。
这是加载树窗口 AfterLoad代码:
Dim cmd As New SQLCommand
这是加载树的 AfterCheckNode 代码:
Dim trv As WinForm.TreeView = e.Sender For Each nd As WinForm.TreeNode In trv.AllNodes If flt = "" Then
Dim cmd As New SQLCommand If dt.DataRows.Count > 0
[此贴子已经被作者于2014-4-11 9:09:33编辑过]
|
||
-- 作者:Bin -- 发布时间:2014/4/11 9:10:00 -- 子父表需要同步加载,具体可以参考帮助的动态加载 已经分页加载的章节. 先去啃一下帮助吧.
|
||
-- 作者:狐狸爸爸 -- 发布时间:2014/4/11 9:27:00 -- 这里有自己设计分页加载树的说明: http://www.foxtable.com/help/topics/2692.htm
参考着调整一下你的代码即可。 |
||
-- 作者:狐狸爸爸 -- 发布时间:2014/4/11 9:34:00 -- 还有,不想分页的话,换个方法加载子表数据: http://www.foxtable.com/help/topics/2894.htm
|