一個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)
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com