视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ComboBox读取数据库生成下拉列表的算法简化
2020-11-09 07:29:35 责编:小采
文档


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

下载本文
显示全文
专题