For i1 As Integer = 0 To n1
Dim r1 As Row = CurrentTable.Rows(i1)
Dim max As String = CurrentTable.DataTable.Compute("Max(同套行序)", "施耐德piao号与数量 = '" & r1("施耐德piao号与数量") & "' And 订单号 = '" & r1("订单号") & "' and piao号 = '" & r1("piao号") & "' and [_Identify] <> " & r1("_Identify"))
If max > "" Then '如果存在最大号
r1("同套行序") = max + 1
Else
r1("同套行序") = 1
End If
Next
上面的红色代码会把隐藏的数据行都去找一遍,找出最大的“同套行序”。请问要怎么样才能做到只计算筛选出的那部分数据行,而不是把隐藏的数据行都进行计算呢?谢谢。
…施耐德piao号与数量 = " & r1("施耐德piao号与数量") & " And…
注意数值列比较值两边还多了单引号
自己看统计结果是否正确就知道了
table.compute是按加载后已筛选的数据做统计:
http://www.foxtable.com/webhelp/topics/0548.htmdatatable.compute是按已加载的全部数据做统计
至于慢的问题做个例子发上来测试一下
'Dim phs() As String = DataTables("弯头开料单").GetComboListString("piao号年月日订单号制造产品号", Tables("弯头开料单").filter).Split("|")
'For ph As Integer = 0 To phs.length - 1
' Dim Filter As String = "[piao号年月日订单号制造产品号] ='" & phs(ph) & "'"
' Dim drs As List(Of DataRow) = DataTables("弯头开料单").Select(Filter)
' Dim ln As Integer = 1
' For Each dr As DataRow In drs
' dr("同套行序") = ln
' ln = ln + 1
' Next
'Next
For i1 As Integer = 0 To n1
Dim r1 As Row = CurrentTable.Rows(i1)
Dim max As String = Tables("弯头开料单").Compute("Max(同套行序)", "piao号年月日订单号制造产品号 = '" & r1("piao号年月日订单号制造产品号") & "' and [_Identify] <> " & r1("_Identify"))
If max > "" Then '如果存在最大号
r1("同套行序") = max + 1
Else
r1("同套行序") = 1
End If
Next
上面两种方法我都试了,好像都是跟加载数据的多少有关。理论上来说,哪个方法会比较快点呢?
绝对不可能都一样,不要使用好像这种字眼,请认真测试
table.compute是按加载后已筛选的数据做统计datatable.compute是按已加载的全部数据做统计

此主题相关图片如下:1.png
