If there is only one reading per month as your data implies, you can get a conversion comparison on a format of yyyymm for your self join.
Basic query might be something like this
Code:
SELECT *
FROM
(SELECT *, Format([readDate],"yymm") AS Curr) AS Prev FROM Printers) AS latest
INNER JOIN
(SELECT *, Format(DateAdd("m",-1,[readDate]),"yymm") AS Prev FROM Printers) AS Previous
ON (latest.Curr = Previous.Prev) AND (latest.printerFK = Previous.printerFK)
WHERE latest.printerFK=1200
Using calculated values like this in your joins can be slow due to the fact they cannot be indexed
edit: just realised you want a year difference - so use -12 rather than -1 in the second aliased query (Previous)