Foxtable(狐表)用户栏目专家坐堂 → 代码效率太低,求助


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

主题:代码效率太低,求助

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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
代码效率太低,求助  发帖心情 Post By:2011/4/6 8:29:00 [显示全部帖子]

运行表B的窗口,效率太低,求助
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 9:23:00 [显示全部帖子]

是的,因为表没有使用加载,所以才想用SQL

在表不加载的前提下,有什么其他更快的方法?


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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 9:53:00 [显示全部帖子]

我试试

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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 11:07:00 [显示全部帖子]

速度确实快了许多。

还有一个问题,我想计算某一期间,期初、期末、入库、出库,这样高效的SQL代码如何写?

窗口在表C中

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar

[此贴子已经被作者于2011-4-6 11:08:35编辑过]

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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 11:15:00 [显示全部帖子]

还可能是外部数据源。

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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 11:44:00 [显示全部帖子]

以下是引用狐狸爸爸在2011-4-6 11:33:00的发言:

这种用SQL语句超出我的水平范围了,需要精通SQL语句的才行。

我只会有三个SQL语句分别求出期初,出库,入库,然后组合成一个表。

期初如何求,这三个数据,如何合成一个表?


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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 11:46:00 [显示全部帖子]

期末,我会通过代码实现的。

 


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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 11:57:00 [显示全部帖子]

这样是不是效率又变低了?

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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 12:23:00 [显示全部帖子]

期初数字怎么求呀,只用一行代码


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


加好友 发短信
等级:狐神 帖子:6911 积分:43773 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 12:33:00 [显示全部帖子]

Dim st As Date = Date.Now '将开始时间保存在变量st中

DataTables("表C").DELETEFOR("")
Dim f As New Filler
f.SourceTable = DataTables("表B") '指定数据来源
f.SourceCols = "存货代码" '指定数据来源列
f.DataTable = DataTables("表C") '指定数据接收表
f.DataCols = "存货代码" '指定数据接收列
f.Fill() '填充数据
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数
st = Date.Now '将开始时间保存在变量st中
Dim dt As DataTable
Dim r As DataRow
DataTables("表d").Fill("Select 存货代码, sum(数量) As 数量 From {表B} where 单据类型 like '%入库%' and 日期<=#" & vars("起始日期") & "# Group by 存货代码",True)
For Each dr As Row In Tables("表C").Rows
    r = DataTables("表d").Find("存货代码 = '" & dr("存货代码") & "'") '找出编号为03的产品
    If r IsNot Nothing
        dr("初1")=r("数量")
        dr("期初")=dr("初1")-dr("初2")
        dr("期末")=dr("期初")+dr("入库")-dr("出库")
    End If
Next
DataTables("表d").Fill("Select 存货代码, sum(数量) As 数量 From {表B} where 单据类型 like '%出库%' and 日期<=#" & vars("起始日期") & "# Group by 存货代码",True)
For Each dr As Row In Tables("表C").Rows
    r = DataTables("表d").Find("存货代码 = '" & dr("存货代码") & "'") '找出编号为03的产品
    If r IsNot Nothing
        dr("初2")=r("数量")
        dr("期初")=dr("初1")-dr("初2")
        dr("期末")=dr("期初")+dr("入库")-dr("出库")
    End If
Next
DataTables("表d").Fill("Select 存货代码, sum(数量) As 数量 From {表B} where 单据类型 like '%出库%' and 日期>=#" & vars("起始日期") & "# and 日期<=#" & vars("截止日期") & "# Group by 存货代码",True)
For Each dr As Row In Tables("表C").Rows
    r = DataTables("表d").Find("存货代码 = '" & dr("存货代码") & "'") '找出编号为03的产品
    If r IsNot Nothing
        dr("出库")=r("数量")
        dr("期末")=dr("期初")+dr("入库")-dr("出库")
    End If
Next
DataTables("表d").Fill("Select 存货代码, sum(数量) As 数量 From {表B} where 单据类型 like '%入库%' and 日期>=#" & vars("起始日期") & "# and 日期<=#" & vars("截止日期") & "# Group by 存货代码",True)
For Each dr As Row In Tables("表C").Rows
    r = DataTables("表d").Find("存货代码 = '" & dr("存货代码") & "'") '找出编号为03的产品
    If r IsNot Nothing
        dr("入库")=r("数量")
        dr("期末")=dr("期初")+dr("入库")-dr("出库")
    End If
Next
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数


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