>Is there any particular reason you are only checking for a non-zero return
>value?  Are there other values, some of which may indicate a problem?


Thanks, Scott.

Non-zero just means the printing process should have finished, one way or 
another, since that's the only way it should be possible for that value to 
be non-zero.

1 indicates success. There are three possible negative values that the 
separate printing .exe can generate before the REPORT FORM... command can run:

- 1 The printing .exe couldn't find the job information table (the one that 
contains the REPORT FORM .... command to be executed).
-2  The printing .exe found the job info table but couldn't open it.
-3 The printing .exe opened the job info table but couldn't retrieve a 
command from it.

If any of those values is generated, the REPORT FORM... command is not 
issued, but the printing .exe will still create the semaphore table with 
the value and then terminate. Since the VFP Error 1 occurs on the REPORT 
FORM... command, these situations aren't in play.

- 4 User cancelled printing

I use the ReportDone()/WasPrinted technique from Cathy Pountney's book to 
generate this value if the user cancelled printing. This value gets 
generated by the printing .exe after REPORT FORM ... runs, but in the 
scenarios where the problem occurs, the user hasn't cancelled printing.

The value we're talking about gets returned to the reporting class from the 
main program's printing class. That class, in addition to passing on a 
value from the separate printing .exe's semaphore file, can return other 
negative values indicating a problem in itself.

Whether or not the returned value indicates success, the reporting class 
cleans up by itself by erasing the temporary tables once it has that value.

Then, if the returned value isn't 1 or -4, the report class requests a 
"translation" error message from the printing object for the value and asks 
its parent form to display the message via a MESSAGEBOX().

When the problem I'm describing occurs, the value returned from the 
printing class is -5, which indicates the printing class did not retrieve a 
value from the semaphore file. This is consistent with the error occurring 
in the .exe on the REPORT FORM ... line, since in that case the .exe's 
error-handling/logging procedure is triggered and control never returns to 
the code that generates the semaphore file. It also implies that my code, 
including Tools.dll, is working correctly, since execution in the reporting 
class doesn't proceed until this value is returned.

Since the printing program is generic, I don't attempt to find specific 
temporary report header or detail tables in my tests in that program. The 
report .frx does test for the presence of, and ability to open, those 
tables in BeforeOpenTables() and will return .F. if those tests fail. While 
debugging this, I put MESSAGEBOX() calls in this BeforeOpenTables() method 
that should have been triggered if the header or detail tables were not 
found. They did not run, which implies to me that the REPORT FORM ... 
command somehow detected the missing table before the .frx 
BeforeOpenTables() event/method ran.

Thanks again.

Ken Dibble
www.stic-cil.org








_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/[EMAIL PROTECTED]
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to