老师, 我有一个问题:如何设置最简筛选条件,要求是从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个表都在同一个数据源。
datatables("SecondarySchedule").LoadFilter="WO in (select WO from {WOrkOrderStatus} where WOStatus<>'C')"
datatables("SecondarySchedule").Load
上面的用法少了第一步也会少用了很多内存,效率也会提高很多
另外像上面第一步这种用法也会增加不少的内存使用