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


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

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

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


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

期初不就是这个日期之前的入库减去这个日期之前的出库吗?

合并表的方法:遍历表A的每一行,从表B中找出编号相同的行,然后将这行某列的值写入表B中对应的行。

 

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

 回到顶部
帅哥,在线噢!
lihe60
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 11:57:00 [只看该作者]

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

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


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

这种合并不存在效率问题。

 回到顶部
帅哥,在线噢!
lihe60
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 12:23:00 [只看该作者]

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


 回到顶部
帅哥,在线噢!
lihe60
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望: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 & "秒") '计算并显示执行代码所花费的秒数


 回到顶部
帅哥,在线噢!
lihe60
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 12:33:00 [只看该作者]

抛砖引玉

 回到顶部
帅哥,在线噢!
lihe60
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望:0 精华:0 注册:2009/3/2 14:07:00
迎六一优惠,仅需3万,即可拥有一个40个窗口,20个报表的完整系统+BIDP平台(永久版)。  发帖心情 Post By:2011/4/6 12:33:00 [只看该作者]

效率很高,希望高手能简化代码。

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
做了一个简单的简历生产器  发帖心情 Post By:2011/4/6 12:38:00 [只看该作者]

你在考狐爸!

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


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

最好还是用Select语句解决,建议你去csdn的SQL Server论坛问问,那里高手如云。

 回到顶部
帅哥,在线噢!
lihe60
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6842 积分:43288 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2011/4/6 15:12:00 [只看该作者]

俺不懂SQL,我现在知道的,全部是在本论坛上学的。

 回到顶部
总数 22 上一页 1 2 3 下一页