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


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

主题:加载出错

帅哥哟,离线,有人找我吗?
红叶
  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编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/4/24 22:03:00 [只看该作者]

将两条代码并起来看看,就是并起来

 


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/4/24 22:05:00 [只看该作者]

Dim s As String = DataTables("销售订单").GetComboListString("销售订单编号")
DataTables("销售订单").LoadFilter="[销售订单编号] In('" & s.Replace("|","','") & "')" and
[销售订单日期] >= '" & Vars("stardate") & "'and [销售订单日期]<= '" & Vars("enddate") & "'" 

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


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


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

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

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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/25 9:45:00 [只看该作者]

估计in 运算符后面的值太多,如果是上千甚至上万呢?

显示一下看看:

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
红叶
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 

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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/4/25 12:13:00 [只看该作者]

in运算里头候选的值太多。

 回到顶部
帅哥哟,离线,有人找我吗?
红叶
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/4/25 13:10:00 [只看该作者]

这样试试:
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "外部数据源名称"   ‘注意:connection 和 Name之间没有空格
cmd.CommandText = "SELECT * From {销售订单} where = [销售订单日期] >= #" & Vars("stardate") & "#and [销售订单日期]<= #" & Vars("enddate") & "# "
dt = cmd.ExecuteReader()

Dim s As String = dt.GetComboListString("销售订单编号")

s = s.Replace("|","','")

cmd.CommandText = "SELECT * From {销售订单明细} where = [销售订单编号] In ('" & s & "')"
dt = cmd.ExecuteReader()

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

 

[此贴子已经被作者于2011-4-25 13:13:32编辑过]

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


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

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

datasource不是DataTables的属性类


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