Thanks for the Tips, some of them have already come in quite handy.
For the Expression 4, I must warn you that they will not always return the last day of the month. Let me explain this in an example:
Lets assume today is the 22nd of March. Now lets run that through your Expression.
First, we deduct the day-number from the current date
DateAdd("d", -1.0 * DatePart("d", Today)
that leaves us with 2010-02-28, the last date of the LAST month. so far so good.
Now you add one month to get the final result
=DateAdd("m", 1, "QueryAbove", Today))
This will result in the following date: 2010-03-28 which is not the last date of this month.
I've been using a very similar expression for quite some time and noticed my mistake only after some customers started to complain. Fortunately only default-dates were affected, so the customers could manually override them. It was a painful workaround, but at least they had one.
I suggest to reverse your Expression to the following
=DateAdd("d", -1.0 * DatePart("d", DateAdd("M", 1, Today)), DatePart("d", DateAdd("M", 1, Today)))
Like this, you will first jump to the next month and then subtract all excess days.
I've written these Expressions out of my head and haven't tested them. So you might find the odd typo or something.