MS Access组合框列表顺序与行源不同

时间:2018-06-08 21:31:06

标签: combobox sql-order-by ms-access-2016

我的数据库是用于活动的轨道设备。

  • [资产]表跟踪所有资产(AssetId,AssetName,Make,Model ...)
  • [Event]表跟踪所有事件(EventId,EventName,Type,StartDate,...)
  • [AssetEvent]表跟踪在哪个事件中使用的资产

“frmUsage”未绑定,并且有一个事件下拉(工作完全正常)和一个“资产”下拉列表。我希望Asset下拉列表显示AssetName排序的Assets,但要绑定AssetId值(用于表单的其他部分)。

Asset的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,并绑定AssetId。实际行为符合预期。
  • 预期:下拉值应按AssetName排序。实际行为与预期不符。值由AssetId排序。

我该如何解决这个问题?

详细说明: 组合框配置为:

  • 列数:2
  • 栏宽:“0cm; 2.5cm”。
  • 行来源类型:表格/查询
  • 装订栏:1
  • 限制列表:是

1 个答案:

答案 0 :(得分:0)

如果您确实需要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;