ホームページ  >  記事  >  データベース  >  ComboBox读取数据库生成下拉列表的算法简化

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

WBOY
WBOYオリジナル
2016-06-07 15:36:001610ブラウズ

一个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 までご連絡ください。