MS Access 组合框列表顺序与行源不同
MS Access combo box list order different from row source
我的数据库正在跟踪活动中使用的设备。
- [资产] table 跟踪所有资产(资产 ID、资产名称、品牌、型号...)
- [Event] table 跟踪所有事件(EventId、EventName、Type、StartDate ...)
- [AssetEvent] table 跟踪在哪个事件中使用了哪个资产
"frmUsage" 未绑定,并且有一个事件下拉列表(工作得很好)和一个 "Asset" 下拉列表。我希望资产下拉列表显示按资产名称排序的资产,但要绑定资产 ID 值(以在表单的其他部分使用)。
资产的 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”。
- 行源类型:Table/Query
- 绑定列: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;
我的数据库正在跟踪活动中使用的设备。
- [资产] table 跟踪所有资产(资产 ID、资产名称、品牌、型号...)
- [Event] table 跟踪所有事件(EventId、EventName、Type、StartDate ...)
- [AssetEvent] table 跟踪在哪个事件中使用了哪个资产
"frmUsage" 未绑定,并且有一个事件下拉列表(工作得很好)和一个 "Asset" 下拉列表。我希望资产下拉列表显示按资产名称排序的资产,但要绑定资产 ID 值(以在表单的其他部分使用)。
资产的 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”。
- 行源类型:Table/Query
- 绑定列: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;