Порядок списка комбинированного списка MS Access отличается от источника строки

Моя БД отслеживает оборудование, используемое на мероприятиях.

  • Таблица [Asset] отслеживает все активы (AssetId, AssetName, Make, Model...)
  • Таблица [Event] отслеживает все события (EventId, EventName, Type, StartDate, ...)
  • Таблица [AssetEvent] отслеживает, какой актив был использован при каком событии

"frmUsage" не связан, имеет выпадающий список Event (работает отлично) и выпадающий список "Asset". Я хочу, чтобы в раскрывающемся списке "Актив" отображались активы, упорядоченные по AssetName, но для привязки значения AssetId (для использования в других частях формы).

SQL актива:

SELECT A.AssetId, A.AssetName FROM tbl_Asset AS A INNER JOIN tbl_AssetEvent 
AS AE ON A.AssetId = AE.AssetId WHERE (((AE.EventId) Like 
Nz(Forms!frmUsage.EventId,"*"))) GROUP BY A.AssetId, A.AssetName ORDER BY A.AssetName;

Поведение:

  • Ожидаемый: когда событие выбрано в форме, на нем должны отображаться только активы, связанные с формой. Фактическое поведение соответствует ожиданиям.
  • Ожидаемое: в раскрывающихся списках должны отображаться AssetName и bind AssetId. Фактическое поведение соответствует ожиданиям.
  • Ожидаемый: значения раскрывающегося списка должны быть упорядочены по AssetName. Реальное поведение НЕ как ожидалось. Значения упорядочены по AssetId.

Как это исправить?

Подробности: поле со списком настроено с:

  • Количество столбцов: 2
  • Ширина столбца: "0 см;2,5 см".
  • Тип источника строки: Таблица / Запрос
  • Связанная колонна: 1
  • Ограничить список: Да

1 ответ

Решение

Если вам действительно нужно AssetID группировка, но запрос работает не так, то вы можете добавить его в отдельный запрос внутри и Order By вне этого.

SELECT * FROM 
(SELECT A.AssetId, A.AssetName FROM tbl_Asset AS A INNER JOIN tbl_AssetEvent 
AS AE ON A.AssetId = AE.AssetId WHERE (((AE.EventId) Like 
Nz(Forms!frmUsage.EventId,"*"))) GROUP BY A.AssetId, A.AssetName)
ORDER BY A.AssetName;
Другие вопросы по тегам