1 / 27

„Mein Drucker druckt nicht!“

„Mein Drucker druckt nicht!“. Uwe Habermann Uwe.Habermann@dFPUG.de. Das Lieblingsthema des Supports. Wer ist Schuld? Der Kunde oder wir? Was können wir tun? Beispiele für mögliche Probleme Probleme vermeiden! Lösungen. Wie druckt VFP?. Druckertreiber ist externes Programm

kordell
Download Presentation

„Mein Drucker druckt nicht!“

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. „Mein Drucker druckt nicht!“ Uwe Habermann Uwe.Habermann@dFPUG.de “Mein Drucker druckt nicht!”

  2. Das Lieblingsthema des Supports • Wer ist Schuld? Der Kunde oder wir? • Was können wir tun? • Beispiele für mögliche Probleme • Probleme vermeiden! • Lösungen “Mein Drucker druckt nicht!”

  3. Wie druckt VFP? • Druckertreiber ist externes Programm • Es wird Code außerhalb von VFP ausgeführt • Kann modale Dialoge anzeigen • Kann Dialoge anzeigen • Beispiel! “Mein Drucker druckt nicht!”

  4. C0000005 • VFP benutzt arithmetischen Co-Prozessor • Druckertreiber stellt Fehlerbehandlung um • Betraf zum Beispiel Druckertreiber von HP • Workaround: DECLARE _fpreset IN MSVCRT20 =_fpreset() • Gefixed seit VFP 6 SP5 “Mein Drucker druckt nicht!”

  5. C0000005 • Programmabsturz an praktisch beliebiger Stelle • Verursacht durch Unidrv.dllBeispiel: HP Laserdrucker “Mein Drucker druckt nicht!”

  6. Pfad nicht gefunden • Druckertreiber verstellt den aktuellen Pfad • Microsoft Office Document Image Writer • PDFmail • Canon Multifunktionsgeräte • Workaround: CD JUSTPATH(SYS(16,0)) • Beispiel! “Mein Drucker druckt nicht!”

  7. Fehler beim Laden des Druckertreibers • Standardverhalten bis FPW • Workaround: USE <Berichtsdatei>.frx BLANK FIELDS expr, tag, tag2 • Normalerweise kein Fehler in VFP • Rückgabewert des Druckertreibers • Beispiel! “Mein Drucker druckt nicht!”

  8. Berichtsdateien patchen • Berichtsdatei patchen • Eine Berichtsdatei kann mit USE geöffnet werden USE <Name der Berichtsdatei>.frx BROWSE “Mein Drucker druckt nicht!”

  9. Titelbereich ist zu groß, um auf die Seite zu passen • Warum? • Ursache: expr ORIENTATION=0 PAPERSIZE=256 COLOR=2 • Beispiel! “Mein Drucker druckt nicht!”

  10. VFP 9: Druckerumgebung speichern? • In der Regel nicht speichern • Trotzdem bleibt ein Problem • Expr: ORIENTATION=0 PAPERSIZE=256 COLOR=2 • Speichern kann aber auch sinnvoll sein • Beispiel: Schachteinstellung “Mein Drucker druckt nicht!”

  11. Berichtsdateien patchen • Maßeinheit ist 1/10000 Zoll • Im ersten Datensatz stehen die Druckerinformationen • Die Felder Expr, Tag und Tag2 können geleert werden, ausgenommen Orientation • BLANK FIELDS expr, tag, tag2 “Mein Drucker druckt nicht!”

  12. Berichtsdateien patchen * Project Hook BeforeBuild * Entfernt die Druckereinstellungen aus allen Reports. LOCAL lnZ WITH _VFP.ActiveProject.Files FOR lnZ = 1 TO .Count IF .Item(lnZ).Type = "R" WAIT WINDOW .Item(lnZ).name NOWAIT USE (.Item(lnZ).name) BLANK FIELDS TAG, tag2 IF "ORIENTATION=1" $ UPPER(expr) REPLACE expr WITH "ORIENTATION=1" ELSE BLANK FIELD expr ENDIF USE ENDIF NEXT ENDWITH WAIT CLEAR “Mein Drucker druckt nicht!”

  13. Fehlerbehandlung • Seit VFP 8 ist während der Ausführung des Report-Befehls die aktuelle Fehlerbehandlung aktiv • Es ist jedoch nicht möglich die Ausführung nach einem Fehler fortzusetzen! • Beispiel! “Mein Drucker druckt nicht!”

  14. Fehlerbehandlung • Immer! TRY REPORT FORM <meinBericht> … CATCH MESSAGEBOX(MESSAGE(),64,"Fehler") ENDTRY “Mein Drucker druckt nicht!”

  15. Wann führt das zu einem Fehler? SET PRINTER TO DEFAULT • Wenn kein Druckertreiber installiert ist! • Fehler beim Zugriff auf den Drucker-Spooler. • Also: TRY SET PRINTER TO DEFAULT CATCH ENDTRY “Mein Drucker druckt nicht!”

  16. Berichte einschließen oder mitliefern? • Beides! • Bearbeiten eines Berichts durch den Anwender MODIFY REPORT ? • Exportieren einer Berichtsdatei aus der laufenden Exe-Datei USE <Name der Berichtsdatei>.frx COPY TO <neuer Name>.frx “Mein Drucker druckt nicht!”

  17. VFP 9: Reportbehavior 90 • Die Lösung aller Probleme? • Oder neue Probleme? • Was ist zu beachten? “Mein Drucker druckt nicht!”

  18. Variable ´_REPORTOUTPUT´ wurde nicht gefunden • Report Apps mitliefern oder einschließen • Sonst Laufzeitfehler beim Kunden • Artikel in FoxX 17 “Mein Drucker druckt nicht!”

  19. Reportbehavior 90 • Nicht native in der VFP 9 Runtime enthalten • Erfordert die Berichtsanwendungen: • ReportOutput.app (REPORT FORM …) • ReportPreview.app (… PREVIEW) • ReportBuilder.app (nur für MODIFY REPORT) • Quellcode zu finden in Tools\xsource\xsource.zip “Mein Drucker druckt nicht!”

  20. Reportbehavior 90 • Wahlweise • Installation der Berichtsanwendungen auf dem Kunden-PC • Einbeziehung des Quellcodes in das eigene Projekt “Mein Drucker druckt nicht!”

  21. Installation beim Kunden • Berichtsanwendungen werden automatisch gefunden, wenn sie im Ordner der VFP 9 Runtime installiert sind • Installation mit InstallShield Express per Merge Module VFP9RptApps.msm möglich • Nachteil: die Berichtsanwenungen werden nur in einer englischen Version geliefert “Mein Drucker druckt nicht!”

  22. Systemvariablen • Wenn die Berichtsanwendungen nicht im Ordner der VFP 9 Runtime installiert werden, müssen die Systemvariablen gesetzt werden: _reportoutput = <Pfad> + "ReportOutput.app" _reportpreview = <Pfad> + "ReportPreview.app" _reportbuilder = <Pfad> + "ReportBuilder.app" “Mein Drucker druckt nicht!”

  23. Sourcecode in eigenen Projekten • VFPSource\ReportOutput (ca. 500 KB) _REPORTOUTPUT = "frxoutput.prg" • VFPSource\ReportPreview (ca. 650 KB) _REPORTPREVIEW = "frxpreview.prg" • VFPSource\ReportBuilder (ca. 1 MB) _REPORTBUILDER = "frxbuilder.prg" “Mein Drucker druckt nicht!”

  24. Lokalisierung • ReportOutput: reportoutput_locs.h reportlisteners_locs.h • ReportPreview: frxpreview_loc.h • ReportBuilder: _frxcursor.h frxbuilder_loc.h • Wichtig In frxbuilder_loc.h und frxpreview_loc.h: #define USE_LOC_STRINGS_IN_UI .T. “Mein Drucker druckt nicht!”

  25. Reportlistener • Berichtsausgabe im XML oder HTML Format ist nur möglich, wenn _reportlistener.vcx/vct in das eigene Projekt einbezogen wird “Mein Drucker druckt nicht!”

  26. Was noch? • Berichtsausgabe erfolgt im Grafikmodus • Große Druck-Jobs • Kein Text aus PDF kopierbar? • Beispiel! “Mein Drucker druckt nicht!”

  27. Vielen Dank für Euer Interesse! Uwe Habermann “Mein Drucker druckt nicht!”

More Related