Foxtable(狐表)用户栏目专家坐堂 → 加载出错


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

主题:加载出错

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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
加载出错  发帖心情 Post By:2011/4/24 16:22:00 [显示全部帖子]

销售订单和销售订单明细通过销售订单编号关联

在销售订单中加载按钮代码:

        DataTables("销售订单").LoadFilter="[销售订单日期] >= '" & Vars("stardate") & "'and [销售订单日期]<= '" & Vars("enddate") & "'"

        '(SQL外部数据源,SQL数据库就安装在本机的)
        DataTables("销售订单").Load
        Dim s As String = DataTables("销售订单").GetComboListString("销售订单编号")
        DataTables("销售订单明细").LoadFilter = "[销售订单编号] In('" & s.Replace("|","','") & "')"
        DataTables("销售订单明细").Load

我加载销售订单日期范围为2011-01-01 至 2011-04-24的销售订单和销售订单明细,出错

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20110424161238.png
图片点击可在新窗口打开查看
这个日期范围内的两个表的数据也不过才3000多条呀?
[此贴子已经被作者于2011-4-24 16:25:29编辑过]

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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/25 9:41:00 [显示全部帖子]

不能这样连着,销售订单提按日期范围加载,加载后销售订单明细按销售订单的销售订单编号加载

主要是帮我分析看看,是原因导致加载超时呢?数据量并不多呀?


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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/25 12:10:00 [显示全部帖子]

我选择时间范围为2011-04-01至2011-04-25,共加载销售订单表704条数据和销售订单明细表748条数据,都用了差不多1分钟时间

但用

MessageBox.Show("[销售订单编号] In('" & s.Replace("|","','") & "')")

却显示不出来,死机

请问是以下这个代码有问题吗?

DataTables("销售订单").LoadFilter="[销售订单日期] >= '" & Vars("stardate") & "'and [销售订单日期]<= '" & Vars("enddate") & "'"

        '(SQL外部数据源,SQL数据库就安装在本机的)
        DataTables("销售订单").Load
        Dim s As String = DataTables("销售订单").GetComboListString("销售订单编号")
        DataTables("销售订单明细").LoadFilter = "[销售订单编号] In('" & s.Replace("|","','") & "')"
        DataTables("销售订单明细").Load

 

有没有别的提速加载办法?


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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/25 12:59:00 [显示全部帖子]

我把代码改成

DataTables("销售订单").LoadFilter="[销售订单日期] >= '" & Vars("stardate") & "'and [销售订单日期]<= '" & Vars("enddate") & "'"
        ' 对于SQL SERVER数据源,日期必须用单引号括起来:
        DataTables("销售订单").Load

        Dim ids As String
        For Each dr As DataRow In DataTables("销售订单").DataRows
        ids = ids & "," & dr("销售订单编号")
        Next
        ids= ids.Trim(",")
        DataTables("销售订单明细").LoadFilter = "销售订单编号 In (" & ids & ")"
        DataTables("销售订单明细").Load()

结果显示

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20110425125801.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/25 13:27:00 [显示全部帖子]

DataTables("销售订单明细").datasource = dt

datasource不是DataTables的属性类


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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/25 13:39:00 [显示全部帖子]

我再次把代码改成以下代码进行测试(但实际运用中用这样的加载条件不能达到要求的,订单明细的加载条件必须通过订单表的关联列的值进行加载,这样改只是为了测试)

DataTables("销售订单").LoadFilter="[销售订单日期] >= '" & Vars("stardate") & "'and [销售订单日期]<= '" & Vars("enddate") & "'"
        DataTables("销售订单").Load

        DataTables("销售订单明细").LoadFilter="[销售订单日期] >= '" & Vars("stardate") & "'and [销售订单日期]<= '" & Vars("enddate") & "'"
        DataTables("销售订单明细").Load

加载时间范围选择2011-03-01到2011-04-25,加载共2386+2529条数据,却用了5至6分钟,这样的数据量也不算是太大,为什么却用时这么久呢?更是有更大的数据量要加载,就会要么超时,要么死机?


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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/25 14:30:00 [显示全部帖子]

选择一个销售订单表的行再加载对应的销售订单明细中的内容即可。

这个方法很值得,但代码在哪个事件写?如何写呢?


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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/26 16:50:00 [显示全部帖子]

我再次把代码改成以下代码进行测试(但实际运用中用这样的加载条件不能达到要求的,订单明细的加载条件必须通过订单表的关联列的值进行加载,这样改只是为了测试)

DataTables("销售订单明细").LoadFilter=""
DataTables("销售订单明细").Load

DataTables("销售订单").LoadFilter=""
DataTables("销售订单").Load

这样我把加载的顺序倒过来加载全部的数据,却很快就完成,但是第二次再按这个加载条件加载,却又死机了,再次改成

DataTables("销售订单明细").LoadFilter="[_Identify] Is Null"
DataTables("销售订单明细").Load

DataTables("销售订单").LoadFilter="[_Identify] Is Null"
DataTables("销售订单").Load

 

DataTables("销售订单明细").LoadFilter=""
DataTables("销售订单明细").Load

DataTables("销售订单").LoadFilter=""
DataTables("销售订单").Load

又很快就完成加载

我就不明白了,为什么要先加载关联子表销售订单明表,然后再加载父表销售订单表,这样就速度很快,反过来就不行?


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


加好友 发短信
等级:小狐 帖子:357 积分:2895 威望:0 精华:0 注册:2008/9/1 14:05:00
  发帖心情 Post By:2011/4/26 18:08:00 [显示全部帖子]

不是我小气不原传例子, 我的数据是外部数据,不知如何做成例子,等我想办法做好例子一定传上来,谢谢大家的帮助

 回到顶部