I have a query that has a "Status" field name with possible entries of "Overdue", "Due Soon", "In-Progress" and "Complete". I can display the records in that order when opening the query using IIF
, but cannot translate it over to the subform that displays the query. I'd like the query to be sorted upon 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
Any help would be appreciated!
答案 0 :(得分:0)
我意识到,如果将我的IIF
语句应用于子窗体的“排序和过滤器”,它将准确地反映在主窗体上。底层查询似乎与主表单也相差一度。
答案 1 :(得分:0)
如果我对您的理解正确,则希望对子窗体和主窗体进行排序。最好的方法是在Access数据库中添加一个表。让我们将此表称为 StatusSortOrder 。在此表中,您可以这样定义值:
'Tablename: StatusSortOrder
----------------------------
ID Status SortOrder
----------------------------
1 Overdue 1
2 Due Soon 2
3 In-Progress 3
4 Complete 4
请勿将ID用作顺序。如果以后需要更改排序顺序,则可以轻松地更改SortOrder列中的数字,但不能更改ID。 现在,将您的表与表 StatusSortOrder 联接(联接列为 Status )。将查询命名为 qryOutput 。在此查询设计器中,您可以在 SortOrder 列ASC或DSC后面进行排序。如果您现在以主表单和子表单的形式使用此查询作为数据源,则会以正确的方式对其进行排序。