My first response is always...use a stored proc, life is much simpler there.
If that is not an option, this the idea that I would pursue ( I haven't needed this so I haven't done it and might get things wrong).
I would create a group in the subreport based on dateA, descending (5/6/12, 3/1/12, 1/1/12). Then I would do a top n report with n = 1. I would apply a filter that dateA <= dateB.
These 3 things combined should give the correct date that you are after.
Hopefully this points you in a direction