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


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

主题:求和代码优化

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 20:37:00 [显示全部帖子]

11楼的用法之后的用法都不要用了。

其实如果使用分组统计,代码放到按钮里执行,和使用update效果相差不大的。慢主要是慢在逐行的查询统计,一次性统计这个表的数据不会慢的。相当于一车就把所有人拉到目的地和一个人送一趟的区别

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 21:11:00 [显示全部帖子]

如果使用sql语句,不需要分组,也不需要e.datarow,调用SQL要使用SQLcommand:http://www.foxtable.com/webhelp/topics/0696.htm

如果使用分组,要遍历所有行赋值,也不需要e.datarow,更不需要sql
[此贴子已经被作者于2022/11/24 21:11:30编辑过]

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 21:43:00 [显示全部帖子]

如果提示列名不对肯定有不对的。

上面这种用法和1楼的速率没有任何区别,一样很慢。都说了很多次了,不要在循环里做统计,而是一次性把工序跟踪表这个表的数据统计出来


Dim b As New sqlGroupTableBuilder("统计表1", "工序跟踪表")
b.Groups.AddDef("成品编码") '根据产品分组
b.Groups.AddDef("毛坯编码") '根据产品分组
b.Totals.AddDef("循环时间") '对数量进行统计
……
Dim dt As DataTable = b.Build(True)
dim dr as datarow
For Each dr3 As Row In Tables("成本总明细_明细查询").Rows
dr = dt.find("成品编码 = '" & dr3("成品编码") & "' and 毛坯编码 = '" & dr3("毛坯编码") & "'")
if dr isnot nothing then
    dr3("工时") = dr("循环时间")
    dr3("直接材料_配件费用") = dr("直接材料_配件成本")
……
end if
next

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 22:08:00 [显示全部帖子]

应该是"工序跟踪表"数据太多了,如果只需要统计和"成本总明细_明细查询"有关的数据,要确定一下,"成本总明细_明细查询"的数据是从哪来的,"成本总明细_明细查询"是查询表还是数据表?是加载了全部的数据还是部分数据?

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 22:33:00 [显示全部帖子]

Dim b As New sqlGroupTableBuilder("统计表1", "工序跟踪表")
b.C
改为
Dim sql As String = "Select * from 工序跟踪表 as a where exists(select * from 窗口表对应的后台表 as b where 查询出每个月1号和最后一天之间的明细的条件放进这里 and a.成本编码=b.成本编码 and a.毛坯编码=b.毛坯编码)"
Dim b As New GroupTableBuilder("统计表1",sql, "数据源名称")

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 22:59:00 [显示全部帖子]

t * from 条码基础数据 as b where 这里放查询条件,不是表名,就是查询出每个月1号和最后一天之间的明细的条件放进这里 and a.成本编码 = b.成本编

另外请贴出改后的完整代码

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 23:08:00 [显示全部帖子]

操作方法:点击查询按钮,查询出每个月1号和最后一天之间的明细

查询按钮的代码是什么?

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/11/24 23:17:00 [显示全部帖子]

Dim sql As String = "Select * from 工序跟踪表 as a where exists(sele ct * from 条码基础数据 as b where " & e.Form.controls("明细查询").Table.DataTable.LoadFilter & " and a.成本编码 = b.成本编码 And a.毛坯编码 = b.毛坯编码)"

dim dr as datarow = dt.datarows(0)
改为
dim dr as datarow

 回到顶部
总数 19 上一页 1 2