以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 加载出错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=9576)
|
-- 作者:红叶
-- 发布时间: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
-- 发布时间:2011/4/24 22:03:00
--
将两条代码并起来看看,就是并起来
|
-- 作者:blackzhu
-- 发布时间: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
|
-- 作者:红叶
-- 发布时间:2011/4/25 9:41:00
--
不能这样连着,销售订单提按日期范围加载,加载后销售订单明细按销售订单的销售订单编号加载
主要是帮我分析看看,是原因导致加载超时呢?数据量并不多呀?
|
-- 作者:狐狸爸爸
-- 发布时间:2011/4/25 9:45:00
--
估计in 运算符后面的值太多,如果是上千甚至上万呢?
显示一下看看:
MessageBox.Show("[销售订单编号] In(\'" & s.Replace("|","\',\'") & "\')")
|
-- 作者:红叶
-- 发布时间: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
有没有别的提速加载办法?
|
-- 作者:狐狸爸爸
-- 发布时间:2011/4/25 12:13:00
--
in运算里头候选的值太多。
|
-- 作者:红叶
-- 发布时间: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
-- 发布时间: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编辑过]
|
-- 作者:红叶
-- 发布时间:2011/4/25 13:27:00
--
DataTables("销售订单明细").datasource = dt
datasource不是DataTables的属性类
|