komischer effekt bei Report....

27/02/2009 - 16:10 von mike_ao | Report spam
hi füxe;

bis dato hatte ich noch nicht folgenden effekt.

in meiner form habe ich eine methode "FORM_DataDruck", die für die
Reportaufbereitung und je nach funktion die Reportbearbeitung aufruft.

mit DODEFAULT(PAR_FNKT, PAR_DATA, PAR_KOPF) wird folgender Code
ausgeführt
<code>
&& Original-Report in gewünschte Ausgabedatei
&& für Fax und PDF-Drucker vorbereiten
LOC_REPFILE = ADDBS(DIR_TMPFILE)+ThisForm.FORM_ReportPrintName
USE (FORCEEXT(.Form_ReportFile,"FRX")) ALIAS REPTEMP IN 0
SELECT("REPTEMP")
COPY TO (FORCEEXT(LOC_REPFILE,"FRX"))
USE IN SELECT("REPTEMP")

&& Arbeitsbereich auf Druckdaten stellen
GO TOP IN (PAR_DATA)
SELECT(PAR_DATA)
DO CASE
CASE PAR_DRUFLAG == FK_REPDRUK
REPORT FORM (LOC_REPFILE) TO PRINTER PROMPT NOCONSOLE

CASE PAR_DRUFLAG == FK_REPVIEW
.WindowState = 2
REPORT FORM (LOC_REPFILE) PREVIEW
.WindowState = 0

CASE PAR_DRUFLAG == FK_REPEDIT
.Visible = .f.
IF PUB_EXEFLAG
_Screen.WindowState = 2
_Screen.Visible = .t.
ENDIF
MODIFY REPORT (.Form_ReportFile)
IF PUB_EXEFLAG
_Screen.Visible = .f.
ENDIF
.Visible = .t.
ENDCASE
</code>

vor dem dodefault werden die entsprechenden Druckdaten im cursor
PAR_DATA und PAR_KOPF vorbereitet.

wenn ich nun aus der form den aufruf per Commandbutton
SELECT * FROM (ThisForm._DbfTemp) ;
INTO CURSOR (LOC_SUMFILE) READWRITE
ThisForm.FORM_DataDruck(FK_REPxxxx, LOC_SUMFILE, "Titelzeile")
aufrufe, funktioniert alles richtig.

mache ich den selben aufruf aus einem GRID.RightClick
SELECT * FROM (ThisForm._DbfName) ;
INTO CURSOR (LOC_SUMFILE) READWRITE ;
WHERE SUMZNUM == LOC_SUMZNUM
ThisForm.FORM_DataDruck(FK_REPDRUK, LOC_SUMFILE, "Zwischenbericht")
dann stehen zwar die richtigen daten in PAR_DATA und PAR_KOPF, aber
nach dem
SELECT(PAR_DATA) (siehe oben)
ist ein falscher arbeitsbereich ausgewàhlt.

mfg mike
 

Lesen sie die antworten

#1 Wolfgang Busker
27/02/2009 - 19:35 | Warnen spam
Hallo Mike,

wenn ein Grid den Fokus hat, wird die Recordsource
des Grids selektiert bevor der Report aufgerufen wird.
Du kannst nur den Fokus vorher auf ein anderes Steuerelement setzen,
dann funktionierts.

Gruß
Wolfgang Busker

"mike_ao" schrieb im Newsbeitrag
news:%
hi füxe;

bis dato hatte ich noch nicht folgenden effekt.

in meiner form habe ich eine methode "FORM_DataDruck", die für die
Reportaufbereitung und je nach funktion die Reportbearbeitung aufruft.

mit DODEFAULT(PAR_FNKT, PAR_DATA, PAR_KOPF) wird folgender Code
ausgeführt
<code>
&& Original-Report in gewünschte Ausgabedatei
&& für Fax und PDF-Drucker vorbereiten
LOC_REPFILE = ADDBS(DIR_TMPFILE)+ThisForm.FORM_ReportPrintName
USE (FORCEEXT(.Form_ReportFile,"FRX")) ALIAS REPTEMP IN 0
SELECT("REPTEMP")
COPY TO (FORCEEXT(LOC_REPFILE,"FRX"))
USE IN SELECT("REPTEMP")

&& Arbeitsbereich auf Druckdaten stellen
GO TOP IN (PAR_DATA)
SELECT(PAR_DATA)
DO CASE
CASE PAR_DRUFLAG == FK_REPDRUK
REPORT FORM (LOC_REPFILE) TO PRINTER PROMPT NOCONSOLE

CASE PAR_DRUFLAG == FK_REPVIEW
.WindowState = 2
REPORT FORM (LOC_REPFILE) PREVIEW
.WindowState = 0

CASE PAR_DRUFLAG == FK_REPEDIT
.Visible = .f.
IF PUB_EXEFLAG
_Screen.WindowState = 2
_Screen.Visible = .t.
ENDIF
MODIFY REPORT (.Form_ReportFile)
IF PUB_EXEFLAG
_Screen.Visible = .f.
ENDIF
.Visible = .t.
ENDCASE
</code>

vor dem dodefault werden die entsprechenden Druckdaten im cursor
PAR_DATA und PAR_KOPF vorbereitet.

wenn ich nun aus der form den aufruf per Commandbutton
SELECT * FROM (ThisForm._DbfTemp) ;
INTO CURSOR (LOC_SUMFILE) READWRITE
ThisForm.FORM_DataDruck(FK_REPxxxx, LOC_SUMFILE, "Titelzeile")
aufrufe, funktioniert alles richtig.

mache ich den selben aufruf aus einem GRID.RightClick
SELECT * FROM (ThisForm._DbfName) ;
INTO CURSOR (LOC_SUMFILE) READWRITE ;
WHERE SUMZNUM == LOC_SUMZNUM
ThisForm.FORM_DataDruck(FK_REPDRUK, LOC_SUMFILE, "Zwischenbericht")
dann stehen zwar die richtigen daten in PAR_DATA und PAR_KOPF, aber
nach dem
SELECT(PAR_DATA) (siehe oben)
ist ein falscher arbeitsbereich ausgewàhlt.

mfg mike

Ähnliche fragen