so you have on a form a button to preview and to print the report.
Why not in the code of the print command button write some code, that disables the form once its been printed.
But the user could still print the report by previewing it, and then printing it that way.
You could have a field on each record to say whether or not that record has been preview or printed, if the record has been printed then the user is not even able to see the record, because you would filter the form to not include these records.
Hope any of this helps, let me know if you require any more help or advise