27
Mein Drucker druckt nicht!” Mein Drucker druckt nicht!” Mein Drucker druckt Mein Drucker druckt nicht!“ nicht!“ Uwe Habermann Uwe Habermann [email protected] [email protected] e e

Mein Drucker druckt nicht! Uwe Habermann [email protected]

Embed Size (px)

Citation preview

Page 1: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

„„Mein Drucker druckt Mein Drucker druckt nicht!“nicht!“

Uwe Uwe HabermannHabermann

[email protected]@dFPUG.deG.de

Page 2: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Das Lieblingsthema des Das Lieblingsthema des SupportsSupports Wer ist Schuld? Der Kunde oder wir? Wer ist Schuld? Der Kunde oder wir?

Was können wir tun?Was können wir tun?• Beispiele für mögliche ProblemeBeispiele für mögliche Probleme• Probleme vermeiden!Probleme vermeiden!• LösungenLösungen

Page 3: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Wie druckt VFP?Wie druckt VFP?

Druckertreiber ist externes Druckertreiber ist externes ProgrammProgramm

Es wird Code außerhalb von VFP Es wird Code außerhalb von VFP ausgeführtausgeführt

Kann modale Dialoge anzeigenKann modale Dialoge anzeigen Kann Dialoge anzeigenKann Dialoge anzeigen Beispiel!Beispiel!

Page 4: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

C0000005C0000005

VFP benutzt arithmetischen Co-ProzessorVFP benutzt arithmetischen Co-Prozessor Druckertreiber stellt Fehlerbehandlung umDruckertreiber stellt Fehlerbehandlung um Betraf zum Beispiel Druckertreiber von HPBetraf zum Beispiel Druckertreiber von HP

• Workaround:Workaround:

DECLARE _fpreset IN MSVCRT20 DECLARE _fpreset IN MSVCRT20

=_fpreset()=_fpreset() Gefixed seit VFP 6 SP5Gefixed seit VFP 6 SP5

Page 5: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

C0000005C0000005

Programmabsturz an praktisch Programmabsturz an praktisch beliebiger Stellebeliebiger Stelle

Verursacht durch Unidrv.dllVerursacht durch Unidrv.dllBeispiel: HP LaserdruckerBeispiel: HP Laserdrucker

Page 6: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Pfad nicht gefundenPfad nicht gefunden

Druckertreiber verstellt den Druckertreiber verstellt den aktuellen Pfadaktuellen Pfad• Microsoft Office Document Image WriterMicrosoft Office Document Image Writer• PDFmailPDFmail• Canon MultifunktionsgeräteCanon Multifunktionsgeräte

Workaround:Workaround:CD JUSTPATH(SYS(16,0))CD JUSTPATH(SYS(16,0))

Beispiel!Beispiel!

Page 7: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Fehler beim Laden des Fehler beim Laden des DruckertreibersDruckertreibers Standardverhalten bis FPWStandardverhalten bis FPW

• Workaround:Workaround:USE <Berichtsdatei>.frxUSE <Berichtsdatei>.frx

BLANK FIELDS expr, tag, tag2BLANK FIELDS expr, tag, tag2

Normalerweise kein Fehler in VFPNormalerweise kein Fehler in VFP Rückgabewert des DruckertreibersRückgabewert des Druckertreibers Beispiel!Beispiel!

Page 8: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Berichtsdateien patchenBerichtsdateien patchen

Berichtsdatei patchenBerichtsdatei patchen• Eine Berichtsdatei kann mit USE Eine Berichtsdatei kann mit USE

geöffnet werdengeöffnet werden

USE <Name der Berichtsdatei>.frxUSE <Name der Berichtsdatei>.frx

BROWSEBROWSE

Page 9: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Titelbereich ist zu groß, Titelbereich ist zu groß, um auf die Seite zu um auf die Seite zu passenpassen Warum?Warum? Ursache: exprUrsache: expr

ORIENTATION=0ORIENTATION=0

PAPERSIZE=256PAPERSIZE=256

COLOR=2COLOR=2 Beispiel!Beispiel!

Page 10: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

VFP 9: VFP 9: Druckerumgebung Druckerumgebung speichern?speichern? In der Regel nicht speichernIn der Regel nicht speichern Trotzdem bleibt ein ProblemTrotzdem bleibt ein Problem Expr:Expr:

ORIENTATION=0ORIENTATION=0

PAPERSIZE=256PAPERSIZE=256

COLOR=2COLOR=2 Speichern kann aber auch sinnvoll Speichern kann aber auch sinnvoll

seinsein• Beispiel: SchachteinstellungBeispiel: Schachteinstellung

Page 11: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Berichtsdateien patchenBerichtsdateien patchen

Maßeinheit ist 1/10000 ZollMaßeinheit ist 1/10000 Zoll Im ersten Datensatz stehen die Im ersten Datensatz stehen die

DruckerinformationenDruckerinformationen• Die Felder Expr, Tag und Tag2 können Die Felder Expr, Tag und Tag2 können

geleert werden, ausgenommen geleert werden, ausgenommen OrientationOrientation

• BLANK FIELDS expr, tag, tag2BLANK FIELDS expr, tag, tag2

Page 12: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Berichtsdateien patchenBerichtsdateien patchen

* Project Hook BeforeBuild* Project Hook BeforeBuild* Entfernt die Druckereinstellungen aus allen Reports.* Entfernt die Druckereinstellungen aus allen Reports.LOCAL lnZLOCAL lnZWITH _VFP.ActiveProject.FilesWITH _VFP.ActiveProject.Files

FOR lnZ = 1 TO .CountFOR lnZ = 1 TO .CountIF .Item(lnZ).Type = "R"IF .Item(lnZ).Type = "R"

WAIT WINDOW .Item(lnZ).name NOWAITWAIT WINDOW .Item(lnZ).name NOWAITUSE (.Item(lnZ).name)USE (.Item(lnZ).name)BLANK FIELDS TAG, tag2BLANK FIELDS TAG, tag2IF "ORIENTATION=1" $ UPPER(expr)IF "ORIENTATION=1" $ UPPER(expr)

REPLACE expr WITH "ORIENTATION=1"REPLACE expr WITH "ORIENTATION=1"ELSEELSE

BLANK FIELD exprBLANK FIELD exprENDIFENDIFUSEUSE

ENDIFENDIFNEXTNEXT

ENDWITHENDWITHWAIT CLEARWAIT CLEAR

Page 13: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

FehlerbehandlungFehlerbehandlung

Seit VFP 8 ist während der Ausführung Seit VFP 8 ist während der Ausführung des Report-Befehls die aktuelle des Report-Befehls die aktuelle Fehlerbehandlung aktivFehlerbehandlung aktiv

Es ist jedoch nicht möglich die Es ist jedoch nicht möglich die Ausführung nach einem Fehler Ausführung nach einem Fehler fortzusetzen!fortzusetzen!

Beispiel!Beispiel!

Page 14: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

FehlerbehandlungFehlerbehandlung

Immer!Immer!

TRYTRY

REPORT FORM <meinBericht> …REPORT FORM <meinBericht> …

CATCHCATCH

MESSAGEBOX(MESSAGE(),64,"Fehler")MESSAGEBOX(MESSAGE(),64,"Fehler")

ENDTRYENDTRY

Page 15: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Wann führt das zu einem Wann führt das zu einem Fehler?Fehler?

SET PRINTER TO DEFAULTSET PRINTER TO DEFAULT Wenn kein Druckertreiber installiert ist!Wenn kein Druckertreiber installiert ist!

• Fehler beim Zugriff auf den Drucker-Fehler beim Zugriff auf den Drucker-Spooler.Spooler.

Also:Also:TRYTRY

SET PRINTER TO DEFAULTSET PRINTER TO DEFAULTCATCHCATCHENDTRYENDTRY

Page 16: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Berichte einschließen Berichte einschließen oder mitliefern?oder mitliefern? Beides!Beides! Bearbeiten eines Berichts durch den Bearbeiten eines Berichts durch den

AnwenderAnwenderMODIFY REPORT ?MODIFY REPORT ?

Exportieren einer Berichtsdatei aus Exportieren einer Berichtsdatei aus der laufenden Exe-Dateider laufenden Exe-DateiUSE <Name der Berichtsdatei>.frxUSE <Name der Berichtsdatei>.frx

COPY TO <neuer Name>.frxCOPY TO <neuer Name>.frx

Page 17: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

VFP 9: Reportbehavior VFP 9: Reportbehavior 9090 Die Lösung aller Probleme?Die Lösung aller Probleme? Oder neue Probleme?Oder neue Probleme? Was ist zu beachten?Was ist zu beachten?

Page 18: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Variable ´_REPORTOUTPUT´ Variable ´_REPORTOUTPUT´ wurde nicht gefundenwurde nicht gefunden

Report Apps mitliefern oder Report Apps mitliefern oder einschließeneinschließen

Sonst Laufzeitfehler beim KundenSonst Laufzeitfehler beim Kunden Artikel in FoxX 17Artikel in FoxX 17

Page 19: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Reportbehavior 90Reportbehavior 90

Nicht native in der VFP 9 Runtime Nicht native in der VFP 9 Runtime enthaltenenthalten

Erfordert die Berichtsanwendungen:Erfordert die Berichtsanwendungen:• ReportOutput.app (REPORT FORM …)ReportOutput.app (REPORT FORM …)• ReportPreview.app (… PREVIEW)ReportPreview.app (… PREVIEW)• ReportBuilder.app (nur für MODIFY ReportBuilder.app (nur für MODIFY

REPORT)REPORT) Quellcode zu finden inQuellcode zu finden in

Tools\xsource\xsource.zipTools\xsource\xsource.zip

Page 20: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Reportbehavior 90Reportbehavior 90

WahlweiseWahlweise• Installation der Berichtsanwendungen Installation der Berichtsanwendungen

auf dem Kunden-PCauf dem Kunden-PC• Einbeziehung des Quellcodes in das Einbeziehung des Quellcodes in das

eigene Projekteigene Projekt

Page 21: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Installation beim KundenInstallation beim Kunden

Berichtsanwendungen werden Berichtsanwendungen werden automatisch gefunden, wenn sie im automatisch gefunden, wenn sie im Ordner der VFP 9 Runtime installiert sindOrdner der VFP 9 Runtime installiert sind

Installation mit InstallShield Express per Installation mit InstallShield Express per Merge Module Merge Module VFP9RptApps.msm VFP9RptApps.msm möglichmöglich

Nachteil: die Berichtsanwenungen Nachteil: die Berichtsanwenungen werden nur in einer englischen Version werden nur in einer englischen Version geliefertgeliefert

Page 22: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

SystemvariablenSystemvariablen

Wenn die Berichtsanwendungen nicht im Wenn die Berichtsanwendungen nicht im Ordner der VFP 9 Runtime installiert Ordner der VFP 9 Runtime installiert werden, müssen die Systemvariablen werden, müssen die Systemvariablen gesetzt werden:gesetzt werden:

_reportoutput = <Pfad> + _reportoutput = <Pfad> + ""ReportOutput.appReportOutput.app""

_reportpreview = <Pfad> + _reportpreview = <Pfad> + ""ReportPreview.appReportPreview.app" "

_reportbuilder = <Pfad> + _reportbuilder = <Pfad> + ""ReportBuilder.appReportBuilder.app""

Page 23: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Sourcecode in eigenen Sourcecode in eigenen ProjektenProjekten VFPSource\ReportOutput (ca. 500 KB)VFPSource\ReportOutput (ca. 500 KB)

_REPORTOUTPUT = "frxoutput.prg"_REPORTOUTPUT = "frxoutput.prg"

VFPSource\ReportPreview (ca. 650 KB)VFPSource\ReportPreview (ca. 650 KB)_REPORTPREVIEW = "frxpreview.prg" _REPORTPREVIEW = "frxpreview.prg"

VFPSource\ReportBuilder (ca. 1 MB)VFPSource\ReportBuilder (ca. 1 MB)_REPORTBUILDER = "frxbuilder.prg"_REPORTBUILDER = "frxbuilder.prg"

Page 24: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

LokalisierungLokalisierung

ReportOutput:ReportOutput: reportoutput_locs.hreportoutput_locs.hreportlisteners_locs.hreportlisteners_locs.h

ReportPreview:ReportPreview: frxpreview_loc.hfrxpreview_loc.h ReportBuilder:ReportBuilder: _frxcursor.h_frxcursor.h

frxbuilder_loc.hfrxbuilder_loc.h WichtigWichtig

In frxbuilder_loc.h und frxpreview_loc.h:In frxbuilder_loc.h und frxpreview_loc.h:#define USE_LOC_STRINGS_IN_UI .T.#define USE_LOC_STRINGS_IN_UI .T.

Page 25: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

ReportlistenerReportlistener

Berichtsausgabe im XML oder HTML Berichtsausgabe im XML oder HTML Format ist nur möglich, wenn Format ist nur möglich, wenn _reportlistener.vcx/vct in das eigene _reportlistener.vcx/vct in das eigene Projekt einbezogen wirdProjekt einbezogen wird

Page 26: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Was noch?Was noch?

Berichtsausgabe erfolgt im Berichtsausgabe erfolgt im GrafikmodusGrafikmodus

Große Druck-JobsGroße Druck-Jobs Kein Text aus PDF kopierbar?Kein Text aus PDF kopierbar? Beispiel!Beispiel!

Page 27: Mein Drucker druckt nicht! Uwe Habermann Uwe.Habermann@dFPUG.de

““Mein Drucker druckt nicht!”Mein Drucker druckt nicht!”

Vielen Dank für Euer Vielen Dank für Euer Interesse!Interesse!

Uwe HabermannUwe Habermann