Как отсортировать поле со списком по часто используемым?

#forms #ms-access #combobox

#формы #ms-access #поле со списком

Вопрос:

Итак, простой вопрос: у меня есть поле со списком в моей базе данных, и я хочу, чтобы элементы, которые я выбирал чаще всего, появлялись первыми при следующем добавлении записи.

Ответ №1:

Я бы предложил добавить в таблицу длинное целочисленное поле, содержащее источник строки для вашего списка со списком, и увеличивать значение, содержащееся в таком поле, либо при AfterUpdate событии списка со списком, либо после основной операции, выполняемой вашей формой.

Затем отсортируйте элементы в поле со списком по этому новому полю в порядке убывания.

Ответ №2:

Я предполагаю, что в вашем поле со списком выбирается значение поиска для свойства (PropertyID), которое сохраняется в таблице (MainTable).

Вы можете получить количество раз, когда это свойство было выбрано с помощью

 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
  

Конечно, это линейное взвешивание может быть слишком простым. Вы можете применить любую математику к использованию, например, квадрат или журнал.