Foxtable(狐表)用户栏目专家坐堂 → [求助] 优化代码


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

主题:[求助] 优化代码

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


加好友 发短信
等级:三尾狐 帖子:799 积分:5921 威望:0 精华:0 注册:2018/11/3 8:24:00
[求助] 优化代码  发帖心情 Post By:2022/6/24 22:06:00 [只看该作者]

老师,以下代码运行太慢了,有没有更好办法:



[此贴子已经被作者于2022/6/25 21:27:09编辑过]

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/25 9:36:00 [只看该作者]

如果是同一个数据库的表,直接使用:insert select:https://blog.csdn.net/weixin_33680447/article/details/112994128

cmd.CommandText = "insert intTempConsumable (dDate,Part,QtySelect dDate,cInvCode,iQuantity From ({rdrecord32} Inner JOIN {rdrecords32} ON {rdrecords32}.[ID] = {rdrecord32}.[ID]) where dDate > = '" & e.Form.Controls("Datetimepicker1").Value & "' and dDate < = ' " & e.Form.Controls("Datetimepicker2").Value &"'"
cmd.ExecuteNonQuery

最后的ConsumableMaterial表,可以先对TempConsumable表做个分组统计,然后把统计表结果填充到ConsumableMaterial:http://www.foxtable.com/webhelp/topics/0680.htm
[此贴子已经被作者于2022/6/25 9:37:28编辑过]

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


加好友 发短信
等级:三尾狐 帖子:799 积分:5921 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2022/6/25 11:58:00 [只看该作者]


T
[此贴子已经被作者于2022/6/25 21:27:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/25 13:43:00 [只看该作者]

如果不是同一个数据库的表。不能这样用的。

只能是1楼那样遍历了,这个如果数据多,慢是肯定的,没有优化的余地。

如果TempConsumable只是临时存储数据用的,完全没有必要使用这个表,直接使用sql做分组统计,然后填充到ConsumableMaterial

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


加好友 发短信
等级:三尾狐 帖子:799 积分:5921 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2022/6/25 14:55:00 [只看该作者]

老师


TempConsumable是临时存储数据用的,

以下如何使用 ?
直接使用sql做分组统计,然后填充到ConsumableMaterial


最终写到表中ConsumableMaterial即可。

上面的实在太慢了因数据太多,谢谢。
[此贴子已经被作者于2022/6/25 21:26:48编辑过]

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/25 16:42:00 [只看该作者]

http://www.foxtable.com/webhelp/topics/1827.htm

网上搜索学习一下GROUP BY的用法

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/25 16:51:00 [只看该作者]

或者使用这种方式:http://www.foxtable.com/webhelp/topics/2307.htm,看示例二

Dim sql As String = "Se lect dDate,cInvCode,iQuantity From ({rdrecord32} Inner JOIN {rdrecords32} ON {rdrecords32}.[ID] = {rdrecord32}.[ID]) where dDate > = '" & e.Form.Controls("Datetimepicker1").Value & "' and dDate < = ' " & e.Form.Controls("Datetimepicker2").Value &"' union Se lect  dDate,cInvCode,iQuantity From ({rdrecord11} Inner JOIN {rdrecords11} ON {rdrecords11}.[ID] = {rdrecord11}.[ID]) where dDate > = '" & e.Form.Controls("Datetimepicker1").Value & "' and dDate < = ' " & e.Form.Controls("Datetimepicker2").Value &"'"
Dim b As New GroupTableBuilder("统计表1",sql"Sale")
b.Groups.AddDef("cInvCode"'根据产品分组
b
.Totals.AddDef("iQuantity"'对数量进行统计
b
.Build '生成统计表

然后填充到ConsumableMaterial

 回到顶部