首页  >  文章  >  数据库  >  ComboBox读取数据库生成下拉列表的算法简化

ComboBox读取数据库生成下拉列表的算法简化

WBOY
WBOY原创
2016-06-07 15:36:001609浏览

一个VB 的优化案例 关劲松 PMP 关于测试软件,ComboBox读取数据库生成下拉列表的算法简化。 原有代码: 要遍历整个表的数据。使用了两次嵌套循环,加if判断,加标志位处理。而且代码繁复,不易理解维护。 Combo1(1).Clear Combo1(1).AddItem 6, 0 strSelect

一个VB 的优化案例

关劲松 PMP

 

关于测试软件,ComboBox读取数据库生成下拉列表的算法简化。

原有代码:
    要遍历整个表的数据。使用了两次嵌套循环,加if判断,加标志位处理。而且代码繁复,不易理解维护。
    Combo1(1).Clear
    Combo1(1).AddItem "6", 0
    strSelect = "select * from Code_21 ORDER BY TX_MIN_FREQ_min asc "
    Set rs = daev.sys.Execute(strSelect)
            
    if rs.RecordCount > 0 Then
        exist_flag = False
        rs.MoveFirst
        For i = 1 To rs.RecordCount
            For j = 0 To Combo1(1).ListCount - 1
                If Combo1(1).List(j) = rs.Fields("frequencyband") Then
                    exist_flag = True
                End If
            Next j
            If exist_flag = False Then
                Combo1(1).AddItem rs.Fields("frequencyband"), Combo1(1).ListCount
            ElseIf exist_flag = True Then
                exist_flag = False
            End If
            rs.MoveNext
        Next i
    End If

    Combo1(1).Text = Combo1(1).List(0)

 

改进代码:
    关键使用SQL中distinct 仅显示不相同的记录字段,同时用Clng将数据库定义为文本的frequencyband字段,类型转换为长整形,这样distinct后就可以自动排序。之后的代码就可以简化为一次循环,遍历返回的数据集即可。而且返回的数据集较小。
    Access的别名定义也要留意,不能与当前表的字段重名。因此需要将frequencyband定义为frequency。
  
    strSelect = "select  distinct CLng(frequencyband) as frequency  from Code_21 "
    Set rs = daev.sys.Execute(strSelect)
   
    Combo1(1).Clear
    If rs.RecordCount > 0 Then
        rs.MoveFirst       
        For i = 1 To rs.RecordCount
            Combo1(1).AddItem rs.Fields("frequency"), Combo1(1).ListCount
            rs.MoveNext
        Next i
    End If
   
    Combo1(1).Text = Combo1(1).List(0)

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn