如何按常用的组合框排序?

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 带有一键组合框,显示按枚举名称排序的枚举值

按字母顺序排序和过滤使用工作表名称自动填充的组合框

常用快捷键

常用输入框组组合

转VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)

java中常用排序工具类, 使用的算法是什么?什么,怎么还有组合模式参与?