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

Forms 如何按常用组合框排序?,forms,ms-access,combobox,Forms,Ms Access,Combobox,所以,简单的问题是,我的数据库中有一个组合框,我希望我最常选择的项目在下次添加记录时首先出现。我建议在构成组合框行源的表中添加一个长整型字段,并在组合框的AfterUpdate事件上,或在窗体执行的主操作之后,递增该字段所持有的值 然后,按此新字段按降序对组合框中的项目进行排序。我假设组合框在中为保存在表(MainTable)中的属性(PropertyID)选择查找值 您可以获取选择此属性的次数 SELECT PropertyID, COUNT(*) AS SelectedTimes FROM

所以,简单的问题是,我的数据库中有一个组合框,我希望我最常选择的项目在下次添加记录时首先出现。

我建议在构成组合框行源的表中添加一个长整型字段,并在组合框的
AfterUpdate
事件上,或在窗体执行的主操作之后,递增该字段所持有的值


然后,按此新字段按降序对组合框中的项目进行排序。

我假设组合框在中为保存在表(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

我还将按名称排序,以防两个条目具有相同的计数。

由于使用情况可能会随时间而变化,您应该记录选择某个条目的时间。然后你可以对使用量进行加权,因此最近使用的物品比一年前使用的物品具有更高的权重

然后,您可以运行查询,列出最新使用的项目位于顶部的使用情况:

Select Item, Sum(1 / DateDiff("h", [SelectedTime], Now())) As Usage
From ItemUsage
Group By Item
Order By Sum(1 / DateDiff("h", [SelectedTime], Now())) Desc
当然,这种线性加权可能太简单了。您可以将任何数学应用于该用法,如平方或对数