以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助,号码段标记问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73548)

--  作者:covechen
--  发布时间:2015/8/21 10:47:00
--  求助,号码段标记问题

A表中有N个号码段

B表中有N个号码

要怎么把B表中含有A表号码中号码的号码标记出来以方便后期的统计?

我现在的做法是这样的

以下内容为程序代码:

1 Dim Arys As List(Of String())
2 Arys = DataTables("购单").GetValues("开始|结束|已用","用完 = " & False )
3 For Each Ary As String() In Arys
4 \'Output.Show(Ary(0) & "|" & Ary(1) & "|" & Ary(2))
5 Dim drs As List(Of DataRow)
6 drs = DataTables("寄件").Select("[单号] >= " & ary(0) & " And [单号] <= " & ary(1) )
7 For Each dr As DataRow In drs
8 dr("购单") = True
9 Next
10 If drs.Count <> ary(2) Then
11 DataTables("购单").ReplaceFor("已用",drs.Count , "[开始] = " & ary(0))
12 End If
13 Next

 

这样虽然能把B表的号码标出来,但效率不怎么高,A表中每个号码都要轮一次,,求个高效的解决方法

 

实例如下

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:号码段标记实例_201508211040.zip


--  作者:大红袍
--  发布时间:2015/8/21 11:02:00
--  

你这种,肯定要循环才行啊

 

For Each dr As DataRow In DataTables("购单").Select("")
    Dim filter As String = "[单号] >= " & dr("开始") & " And [单号] <= " & dr("结束")
    DataTables("寄件").replacefor("购单", True, filter)
    dr("已用") = DataTables("寄件").Compute("count(购单)", filter)
Next


--  作者:covechen
--  发布时间:2015/8/21 11:33:00
--  
谢谢,你写的简洁好多