一个 ListView 控件(列表显示),有3个子项,其中第1个是序(Checked属性),第2个第3个是数据数据情况:
第2个第3个都有重复的数据,
要求:
A项重复数据中,只保留最上项或最下项不选择
必须同时满足B项目也是重复的举例:
序号         A      B
1           10     0.1
2           10     0.2
3           10     0.2
4           10     0.2
5           10     1.6
6           10     1.6
7           20     1.5
8           20     1.5
9           20     1.5
10          20     1.5
11          20     1.1
12          20     1.1
13          30     2.8
14          30     2.8
15          30     2.8
16          30     0.8
17          30     0.8
18          30     0.8最后结果是:
从上往下选序号         A      B
2           10     0.2
3           10     0.2
5           10     1.6
7           20     1.5
8           20     1.5
9           20     1.5
11          20     1.1
13          30     2.8
14          30     2.8
16          30     0.8
17          30     0.8从下往上选是
序号         A      B
3           10     0.2
4           10     0.2
6           10     1.6
8           20     1.5
9           20     1.5
10          20     1.5
12          20     1.1
14          30     2.8
15          30     2.8
17          30     0.8
18          30     0.8谁能帮我,50分相送 
并致以崇高的敬礼

解决方案 »

  1.   

    我认为这个问题主要是排序比较麻烦Dim oRst As ADODB.RecordsetSet oRst = New ADODB.Recordset
    oRst.Fields.Append "ID", adBigInt
    oRst.Fields.Append "A", adBigInt
    oRst.Fields.Append "B", adDouble
    oRst.Open这里做个循环,把ListView的数读进来
    oRst.AddNew
    oRst.Fields(0).Value = 1
    oRst.Fields(1).Value = 10
    oRst.Fields(2).Value = 0.1
    oRst.Update从上往下搜索时
    oRst.Sort = "A, B, ID ASC"从下往上搜索时
    oRst.Sort = "A, B, ID DESC"Dim nID as long
    Dim nA as long 
    Dim nB as Double'初始化为不可能出现的值
    nA = 0
    nB = 0oRst.MoveFirst
    Do
    If oRst.EOF = True Then Exit Do
    If oRst.Fields(1).Value <> nA Or oRst.Fields(2).Value <> nB Then
    nA = oRst.Fields(1).Value 
    nB = oRst.Fields(2).Value 
    oRst.Delete adAffectCurrent
    End If
    oRst.MoveNext
    Loop
    这样就把数据筛选出来了,根据筛选出来的数据在ListView作相应处理就可以了