Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共2 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:加载条件

1楼
creastzh 发表于:2024/5/25 7:20:00
老师, 我有一个问题:如何设置最简筛选条件,要求是从100万行数据中筛选大约满足要求的3万行数据的条件. 问题来源是这样的:
生产中每次投产产品均发放一个工单(WO), 每个产品加工有约10~15项工序, 多年来工单发放数已经达到了10万个, 这样总工序数即超过100万行, 某工单(WO)只要有一个工序未完工,该工单未完工, 当前大约有1500~2000个工单当前未完成, 我设置了2个表,分别为工单表WOrkOrderStatus, 工序表SecondarySchedule, 现在要用工单表中未完成的工单加载工序表,我设定的条件是:
1)  获取WOrkOrderStatus中未完成工单号字符串组合 WOs:
Dim WOs As String = DataTables("WOrkOrderStatus").GetComboListString("WO", "WOStatus<>'C'").Replace("|", "','")
If WOs > "" Then
    WOs = "('" & WOs & "')"
End If

2) 在SecondarySchedule中使用下面的条件加载:
Dim FL as string ="WO in " & WOs
datatables("SecondarySchedule").LoadFilter=FL
datatables("SecondarySchedule").Load

问题:
通常运行正常,但偶然会出现 内存溢出的问题从而导致自动化运行终止, 所以我想知道是否还有其它更合适的方式. 

谢谢!
 
2楼
有点蓝 发表于:2024/5/25 9:27:00
不需要第一步,直接这样加载即可,前提是2个表都在同一个数据源。

datatables("SecondarySchedule").LoadFilter="WO in (select WO from {WOrkOrderStatus} where WOStatus<>'C')"
datatables("SecondarySchedule").Load

上面的用法少了第一步也会少用了很多内存,效率也会提高很多

内存溢出一般是整个项目加载的数据过多导致的,不仅仅是这个表的问题,比如有很多表,每个表都加载好几万的数据。考虑做分页:http://www.foxtable.com/webhelp/topics/2269.htm
另外像上面第一步这种用法也会增加不少的内存使用
共2 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.