如何自定义子窗体上的查询?

问题描述 投票:0回答:2

我有一个查询,其中包含“状态”字段名称,可能包含“过期”,“即将到期”,“正在进行中”和“完成”。我可以在使用IIF打开查询时按顺序显示记录,但无法将其转换为显示查询的子表单。我希望查询在Form_Open()上排序

Private Sub Form_Open(Cancel As Integer)

Me.frm_Stability.Form.OrderBy = "Status ASC IIf([Status]='Overdue',1,IIf([Status]='Due Soon',2,IIf([Status]='In-Progress',3,IIf([Status]='Complete',4))))"
Me.frm_Stability.Form.OrderByOn = True

End Sub

任何帮助,将不胜感激!

sql ms-access access-vba
2个回答
0
投票

我意识到,如果我将IIF语句应用于子表单的Sort和Filter,它将准确地反映在主表单上。基础查询似乎与主表单相差一度。


0
投票

如果我理解正确,您需要对子窗体和主窗体进行排序。最好的方法是在Access数据库中添加一个表。让我们调用这个表StatusSortOrder。在此表中,您可以定义值,如下所示:

'Tablename: StatusSortOrder

----------------------------
ID    Status       SortOrder
----------------------------
1     Overdue      1
2     Due Soon     2
3     In-Progress  3
4     Complete     4

不要使用ID作为sord命令。如果您以后必须更改排序顺序,则可以轻松更改SortOrder列中的数字,但您无法更改ID。现在使用表StatusSortOrder(Join Column is Status)加入表。将查询命名为f.e. qryOutput。在此查询设计器中,您可以在列SortOrder ASC或DSC之后进行排序。如果您现在将此查询用作主表单和子表单中的数据源,则将以正确的方式对其进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.