devxlogo

Please Stop Printing!

Please Stop Printing!

Sometimes I want to print data from a recordset to a report, reading and printing each record. However, it’shard to interrupt that process before it sends all recordsets to the printer queue. Use a Cancel buttonassociated to a flag. Besides the button that starts the printing, create another one named Cancel. You canalso set its Cancel property to True, so the user can stop printing by pressing the Esc key. Add a variable ina module:

 Dim CancelNow As Integer

Put this code in the Click event of the Cancel button:

 Sub cCancel_Click ()        CancelNow = -1        DoEventsEnd Sub

You might even do without the button and simply intercept the Escape key. In this case, set the form’sKeyPreview property to True and insert this code:

 Sub Form_KeyPress (KeyAscii As Integer)        'if user presses ESC        If KeyAscii = (27) Then                CancelNow = -1                DoEvents        End IfEnd sub

Finally, add a test for the flag inside the printing loop:

 '... some code...'printing a database recordsetDo While Not MyRecordSet.EOF        Printer.Print MyRecordSet!SomeRecord        MyRecordSet.MoveNext        DoEvents        'stop if Cancel button was clicked        If CancelNow then Exit DoLoopPrinter.EndDoc'... more code...

devx-admin

Share the Post: