Foxtable(狐表)用户栏目专家坐堂 → 求助,查询处理器用尽了堆栈空间!


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

主题:求助,查询处理器用尽了堆栈空间!

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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
求助,查询处理器用尽了堆栈空间!  发帖心情 Post By:2015/11/30 12:07:00 [只看该作者]

有如下代码,在进行查询时会出现查询处理器用尽了堆栈空间的问题,请问应如何做才可以?

 

Dim t As Table = Tables("销售订单查询")

If t.Rows.Count > 0 Then
    Dim ids As String
    For Each r As Row In t.Rows
       
        ids = ids & ",'" & r("sheet_lot") & "'"
    Next
    ids= ids.Trim(",")
   
   
    DataTables("装箱表查询").LoadFilter = "sheet_lot In (" & ids & ")"
    DataTables("装箱表查询").Load()
   
Else
   
    Messagebox.Show("订单表中不存在相关的查询数据!,如有疑问,请与管理员联系","提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
End If

 

 

 

错误信息如下:

 

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:加载[装箱表查询]失败!
详细错误信息:
内部查询处理器错误: 在查询优化过程中,查询处理器用尽了堆栈空间。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 12:15:00 [只看该作者]

ids的值过多,是不是你的 Tables("销售订单查询") 行数太多?太多了就没办法了。

 

尽量少加载一些行吧。


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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2015/11/30 13:04:00 [只看该作者]

应该行是有点多,但客人要求一次性查出这些数据,总要想一个办法吧?

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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2015/11/30 13:52:00 [只看该作者]

按条件查了一下,Tables("销售订单查询") 行数为9000多行,请教各位有没好点的办法?


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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2015/11/30 13:54:00 [只看该作者]

按理来说,9000多行应不算很多吧!

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 14:26:00 [只看该作者]

分开几次加载

 

DataTables("表B").loadfilter = "1=2"
DataTables("表B").load

Dim t As Table = Tables("表A")
Dim ids As String
For i As Integer = 1 To t.rows.count
    Dim r As Row = t.rows(i-1)
    ids = ids & ",'" & r("第二列") & "'"
    If i Mod 1000 = 0 Then
        ids= ids.Trim(",")
        DataTables("表B").RemoveFor("第二列 In (" & ids & ")")
        DataTables("表B").AppendLoad("第二列 In (" & ids & ")", False)
        ids = ""
    End If
Next
ids= ids.Trim(",")
DataTables("表B").RemoveFor("第二列 In (" & ids & ")")
DataTables("表B").AppendLoad("第二列 In (" & ids & ")", False)
ids = ""


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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2015/11/30 15:04:00 [只看该作者]

出现查询表或临时表不能AppendLoad错误提示!

 

是不是查询表不能用AppendLoad?

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 15:23:00 [只看该作者]

呃,查询表不能用。没办法。

 

你分页处理吧。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/30 15:24:00 [只看该作者]

你还不如,把所有都加载出来,然后把查询表的数据删除呢。

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


加好友 发短信
等级:五尾狐 帖子:1033 积分:7258 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2015/11/30 15:41:00 [只看该作者]

呃,想了一个办法,很简单的,可以了,请问这样会有什么问题吗?

 

代码如下:

 

Dim t As Table = Tables("销售订单查询")


If t.Rows.Count > 0 Then

 

DataTables("销售订单查询").LoadChildren("装箱表查询", "sheet_lot", "osal_sheet_lot")


Else
   
    Messagebox.Show("订单表中不存在相关的查询数据!,如有疑问,请与管理员联系","提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
End If


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