以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:重置列太慢  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=84406)

--  作者:刘异
--  发布时间:2016/4/30 12:24:00
--  求助:重置列太慢

老师:五一好!

表中几乎全是跨表引用,和跨表统计的,分页加载每页十五行,点击刷新按钮,刷新按钮代码为:重置列代码,发现重置一页要半分钟。

有没有更好的办法呢?

多谢

 


--  作者:Hyphen
--  发布时间:2016/4/30 14:07:00
--  
统计数据建议还是用统计表来做http://www.foxtable.com/help/topics/2314.htm

或者利用用sql生成查询表http://www.foxtable.com/help/topics/2307.htm

--  作者:rjh4078
--  发布时间:2016/4/30 14:07:00
--  

能用sql的还是用sql吧 瞬间完成


--  作者:刘异
--  发布时间:2016/4/30 15:13:00
--  
查询表好像不能修改和引用的,哎!
--  作者:Hyphen
--  发布时间:2016/4/30 16:04:00
--  
引用没有问题

把统计和修改混为一体,本身逻辑就有问题

--  作者:刘异
--  发布时间:2016/5/2 12:00:00
--  

重置一行要6秒多,分页加载5行重置需要32秒;

我不知道用查询表怎么做,因为表与表之间都是需要用到相互之间的平均值呀,合计值呀,汇总,行数值等


--  作者:rjh4078
--  发布时间:2016/5/2 12:39:00
--  
sql 可以做直接统计的啊  我最长的sql统计代码有20多行
--  作者:大红袍
--  发布时间:2016/5/2 14:14:00
--  
以下是引用刘异在2016/4/30 12:24:00的发言:

老师:五一好!

表中几乎全是跨表引用,和跨表统计的,分页加载每页十五行,点击刷新按钮,刷新按钮代码为:重置列代码,发现重置一页要半分钟。

有没有更好的办法呢?

多谢

 

 

你是不是在DataColChanged事件写了sqlFind、sqlCompute之类的代码?这样肯定慢。

 

建议你单独写一个按钮,先把需要的数据加载出来,在find和compute。


--  作者:刘异
--  发布时间:2016/5/2 22:52:00
--  

Select Case e.DataCol.Name
    Case "生产日期","部门名称","班别","操作员","机台"
        e.DataRow("当班生产合格米数") = DataTables("厚边印刷生产日报表").sqlCompute("Sum(生产用料_合格米数)","[班别] = \'" & e.DataRow("班别") & "\' and [部门名称] = \'" & e.DataRow("部门名称") & "\'and [生产日期] = #" & e.DataRow("生产日期") & "# ")
End Select

老师好:ACC数据源,像这样的跨表统计,可不可以用SQL进行统计呢?
多谢!


--  作者:Hyphen
--  发布时间:2016/5/3 9:03:00
--  
这样每一行都会重复计算5次,效率非常低,至少也要加上非空的判断。

建议还是早Access中创建一个统计查询,通过查询表获取统计消息,然后不要在DataColChanged做,而是加载完毕后再查询统计赋值