如何按常用的组合框排序?
Posted
技术标签:
【中文标题】如何按常用的组合框排序?【英文标题】:How to sort combo box by frequently used? 【发布时间】:2019-04-11 21:00:55 【问题描述】:所以,简单的问题,我的数据库中有组合框,我希望我最常选择的项目在我下次添加记录时首先出现。
【问题讨论】:
【参考方案1】:我建议在构成组合框的行源的表中添加一个 Long Integer 字段,并在组合框的 AfterUpdate
事件上或在您执行的主要操作之后增加该字段保存的值表格。
然后,按此新字段按降序对组合框中的项目进行排序。
【讨论】:
【参考方案2】:我假设您的组合框为保存在表 (MainTable) 中的属性 (PropertyID) 选择查找值。
您可以获得此属性被选中的次数
SELECT PropertyID, COUNT(*) AS SelectedTimes
FROM MainTable
GROUP BY PropertyID
现在通过将此查询用作子查询来获取排序的查找表:
SELECT L.PropertyID, L.Name
FROM
LookupTable L
( SELECT PropertyID, COUNT(*) AS SelectedTimes
FROM MainTable
GROUP BY PropertyID) X
ON L.PropertyID = X.PropertyID
ORDER BY X.SelectedTimes DESC, L.Name
如果两个条目的计数相同,我也会按名称排序。
【讨论】:
【参考方案3】:由于使用情况可能会随着时间而改变,您应该记录时间选择项目。然后您可以对使用情况进行加权,因此最近使用的项目比一年前使用的项目具有更高的权重。
然后您可以运行查询以在顶部列出最近使用的项目的使用情况:
Select Item, Sum(1 / DateDiff("h", [SelectedTime], Now())) As Usage
From ItemUsage
Group By Item
Order By Sum(1 / DateDiff("h", [SelectedTime], Now())) Desc
当然,这种线性加权可能过于简单。您可以将任何数学应用于正方形或对数等用法。
【讨论】:
以上是关于如何按常用的组合框排序?的主要内容,如果未能解决你的问题,请参考以下文章
WPF DataGrid 带有一键组合框,显示按枚举名称排序的枚举值