A family of Microsoft relational database management systems designed for ease of use.
Are you attempting to filter the parent report on the basis of criteria applied to the subreport, i.e. return only those rows in the parent report where there is at least one row in the instance of the subreport for that row which matches the criteria? If so, what you have to do is include a subquery in the OpenReport method's WhereCondition argument where the subquery returns the primary key values of the parent report which match the criteria applied to the subquery. For example, with a report based on an Items table with a subreport based on a query which joins the ItemSuppliers and Suppliers table so as to list the suppliers per item, to filter the report by supplier (entered as a parameter at runtime) it would be called like this:
DoCmd.OpenReport "rptItemSuppliers", View:=acViewPreview, WhereCondition:="ItemID IN(SELECT ItemID FROM ItemSuppliers INNER JOIN Suppliers ON ItemSuppliers.SupplierID = Suppliers.SupplierID WHERE Supplier = [Enter supplier:])"
In your case, however, you are trying to change the report definition so that it is restricted to the criteria. To do this you would not use the WhereCondition argument of the OpenReport method, but open the report in design view, change its RecordSource property so that it includes the IN operator and a subquery along the lines of the above, concatenating the date literals into the subquery. Then close and save the report before outputting it to the PDF file.
A further point is that your query includes a lot of outer joins. Life is too short for me to be able to analyse your SQL statement in detail, but are you sure that in the WHERE clause you are not including any restrictions on the right side of a LEFT OUTER JOIN, or the left side of a RIGHT OUTER JOIN? That won't work as it in effect makes the join an INNER JOIN, so any unmatched rows will not be returned.