I do not understand why or how that is but I most certainly had inserted an ORDER by clause in there and had tested it extensively. I have noticed lots of weird behaviours around recordsets on pages with WA behaviours. You update a recordset, click OK, but it either does not update the code or it inserts a new RS and a new connection string. Perhaps that is what happened.
In any event, it is now sorting with a simple ORDER BY ExpiryDate.