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

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

WBOY
WBOYOriginal
2016-06-07 15:36:001644Durchsuche

一个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)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn