Try setting the subform's OrderByOn property in its Open event:
Private Sub Form_Open(Cancel As Integer)
Me.OrderBy = "[date]"
Me.OrderByOn = True
End Sub
If you really have a field called "date" that could be the problem. That's a
reserved word in SQL (for the field type) and in VBA (for the system date.)
Access is likely to misunderstand the reference. For example, if it sorted
all records by today's date (not the value of the Date field), they would
all be equal (so unsorted.) Rename the field to ServiceDate or something,
and then change the Name and ControlSource of the field on your form.
Another option is to create a query, and use the Sorting row in query design
to specify how you want it sorted. Then open your subform in design view,
and change its Record Source property to the query.