以文本方式查看主题

-  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的属性类