Try not to use "absolute" column headings for dates. You could possibly use "relative" dates. For instance:
Text Box: txtEndDate
You want to show 12 months of sales in columns of a crosstab report.
Set the parameter data type with the menu: Query|Parameter Forms!frmA!txtEndDate Date/Time
Use this expression for your Column Headings: ColHead:"Mth" & DateDiff("m",[SaleDate],Forms!frmA!txtEndDate)
This will produce Mth0, Mth1, Mth2, Mth3,... where Mth0 is sales from the same month as the ending date on your form. Mth1 is the previous month etc.
Set your queries Column Headings property to: "Mth0", "Mth1", "Mth2", "Mth3",.., "Mth11"
Build your report based on these "relative" months. If you need column labels in your report, use text boxes with control sources of: =DateAdd("m",0,Forms!frmA!txtEndDate)
You should be able to substitute other date intervals for months such as "q" for quarter or "d" for day.
This solution requires no code and will run fairly quickly.