如何从经筛选的SQL列中提取不重复值添加至TComboBox组件
最优实现方案对比
方案1:SQL语句直接去重查询(优先推荐)
直接构造带去重的查询语句,让Access数据库层面完成去重逻辑,是性能最优、代码最简洁的方案。
使用的SQL语法如下:
SELECT DISTINCT Tip FROM 你的表名 WHERE Dept = '目标筛选部门值'
实现步骤:
- 给TADOQuery赋值上述SQL语句,连接数据库执行
- 遍历查询返回的结果集,逐行将
Tip字段值添加到TComboBox的Items中即可
优势:无需在业务代码中额外写去重逻辑,数据库原生的去重算法效率远高于业务层实现,哪怕后续表数据量增长也不会有性能问题。
方案2:已有结果集的内存去重
如果你已经完成了Dept筛选的查询,拿到了5行结果,不想再发起一次数据库请求,可以在内存中完成去重:
实现步骤:
- 创建一个临时
TStringList对象,设置sorted = true,Duplicates = dupIgnore - 遍历已有的TADOQuery结果集,将每行的Tip字段值添加到临时TStringList中,重复值会被自动过滤
- 最后将临时TStringList直接赋值给TComboBox的Items属性即可
优势:无需额外访问数据库,对于你当前仅5行的小结果集,执行效率极高。
方案3:固定值直接写死
如果你确认该场景下Tip的取值只会是FAX、PRINTER、SCANNER三个,没有其他可能的取值,可以直接给TComboBox的Items手动赋值三个选项,连数据库查询都不需要,是开发效率最高的方案。

内容的提问来源于stack exchange,提问作者Mamed Aliyev
相关产品推荐
相关产品推荐

