Hi Tmconsult
I can think of a pretty convoluted way to do it. Create a new field in the query, i.e. "Sortfield". Populate it in the criteria box with something that returns a numeric ascending value, such as:
SELECT CASE [Scheduling_Guidelines].[day]
CASE "M"
Sortfield = 1 ...etc
Then click on the "Ascending" option in the sort box. I admit I have never tried the SELECT...CASE structure in criteria, but have had luck using SQL and operators such as "In" & "Not". The point is, you can create a defined field in your query to return a value, and then sort on it.
My first reaction was to use the IIf function, but didn't have time to explore it. Depending on your time, 2 other options present themselves also:
First, investigate if the Choose function is available in VBA (think it is in VB6) and try that, else I found some code on the DevX.com website for a user-defined function that could work for you (sorry it didn't paste well):
Function CompareValue(value As Variant, ParamArray valueList() As Variant) As _
Integer
' Comments : Compares a numeric or string value with a list of other values.
' : Returns the 1-based index of the matching value, or zero if the
' : value doesn't appear in the list.
' : String comparisons are case-sensitive.
' : This function can conveniently replace a Select Case or a list
' : of OR'ed comparison, e.g. you can replace the following line :
' : If s = "one" Or s = "Two" Or s = "Three" Then
' : with the more concise
' : If CompareValue(s, "One", "Two", "Three"

Then
' Parameters : value - thing to be compared
' : valueList - list of things to be compared to
' Returns : Base 1 index of matching array item
' --------------------------------------------------------
Dim index As Integer
For index = 0 To UBound(valueList)
If value = valueList(index) Then
CompareValue = index + 1
Exit For
End If
Next
End Function
You can solve this fairly easily - good luck!!
-Geno