2. Mai 2006 11:28
2. Mai 2006 13:14
NavHummel hat geschrieben:Wie zeige ich auf allen Seiten die Gesamtseitenzahl an?
2. Mai 2006 15:19
2. Mai 2006 16:07
2. Mai 2006 16:12
Michael Schumacher hat geschrieben:...Aber, du könntest einen Pseudodrucker einrichten, ...
2. Mai 2006 16:17
2. Mai 2006 16:36
martinst hat geschrieben:Nicht in Preview sonder Report.SaveAsHTML und dann die Seitenzahl holen.
Du kannst ja im Report eine neue Funktion implementieren
GetTotalPage
exit(TotalPages)
Report.SaveAsHtml(Environ('TEMP')+'\Reportxy.html');
Report.GetTotalPage
...
2. Mai 2006 16:42
2. Mai 2006 18:45
mespelage hat geschrieben:@rotsch
"Report als Preview ausführen ohne Requestform "
lässt sich ein Preview im Report erzwingen, d.h. kann ich einen Report automatisch ausführen nur in der Seitenansicht?
2. Mai 2006 18:49
Den Report müsste man ganz normal starten und als Seitenansicht laufen lassen. Dabei können die Seiten gezählt werden. Anschliessend muss dann der Report nochmals gestartet und definitiv gedruckt werden.
2. Mai 2006 19:27
[CopyLoop - OnAfterGetRecord()]
[...]
CurrReport.PAGENO := 1;
// > TL4.01:01 >>>
IF NOT CurrReport.PREVIEW THEN BEGIN
SalesHeader2 := "Sales Header";
SalesHeader2.SETRECFILTER;
repMySelf.SETTABLEVIEW(SalesHeader2);
IF repMySelf.SAVEASHTML(DELCHR(ENVIRON('TEMP'),'>','\') + '\' + repMySelf.OBJECTID + '.html') THEN BEGIN
TotalNoOfPages := repMySelf.GetTotalNoOfPages;
CLEAR(repMySelf);
ERASE(DELCHR(ENVIRON('TEMP'),'>','\') + '\' + repMySelf.OBJECTID + '.html');
END;
END;
// < TL4.01:01 <<<
[GetTotalNoOfPages() : Integer]
EXIT(CurrReport.PAGENO);
3. Mai 2006 08:50
Der optimale Punkt wäre der OnPreReport-Trigger, da dort alle gesetzten Filter des Anwenders bekannt sind, jedoch noch keine Druckausgabe erfolgte.
3. Mai 2006 10:36
Timo Lässer hat geschrieben:Die sicherste Methode ist und bleibt wohl leider wirklich nur die Möglichkeit, den Report per SaveAsHTML zu speichern und über eine entsprechende Funktion die Anzahl Seiten ermitteln.
Der optimale Punkt wäre der OnPreReport-Trigger, da dort alle gesetzten Filter des Anwenders bekannt sind, jedoch noch keine Druckausgabe erfolgte.
Für Verkaufs- und Einkaufs-Belege (wo die Seitenzahl jedesmal wieder zurückgesetzt wird), empfiehlt sich der OnAfterGetRecord-Trigger des DataItems CopyLoop (direkt hinter der Zeile CurrReport.PAGENO := 1;).
Kleiner Hinweis:
Wenn ein Report als XML oder HTML gespeichert wird, läuft diese Instanz des Reports in dem gleichen Modus wie die Seitenansicht, d. h. man kann mit CurrReport.PREVIEW eine Endlosschleife verhindern:
- Code:
[CopyLoop - OnAfterGetRecord()]
3. Mai 2006 15:40
3. Mai 2006 17:24
Head - OnAfterGetRecord()
//Hier
IF NOT BlockTotalPages THEN BEGIN
HTMLFileName := ENVIRON('TEMP')+'\'+FORMAT(CREATEGUID)+'html';
Header2.COPY(Head);
Header2.SETRECFILTER;
SalesOrder2.SETTABLEVIEW(Header2);
SalesOrder2.USEREQUESTFORM(FALSE);
SalesOrder2.BlockCountTotalPages(TRUE);
SalesOrder2.SAVEASHTML(HTMLFileName);
IF EXISTS(HTMLFileName) THEN
ERASE(HTMLFileName);
PageCount := SalesOrder2.GetPageCount;
END;
//Ende
Total - OnPostDataItem()
//Hier
PageCount := CurrReport.PAGENO;
GetPageCount() : Integer
//Hier
EXIT(PageCount);
BlockCountTotalPages(_b : Boolean)
//Hier
BlockTotalPages := _b;
3. Mai 2006 20:31
4. Mai 2006 10:18
4. Mai 2006 17:39
4. Mai 2006 19:22
4. Mai 2006 21:54
4. Mai 2006 22:25
5. Mai 2006 07:28
5. Mai 2006 08:59
2. Februar 2009 17:00
14. April 2020 12:52
Ignitor hat geschrieben:Ich habe mal einen Post im Tips & Tricks Bereich zu diesem Thema erstellt:
viewtopic.php?f=17&t=6809
[…]
IF PageCountReport.SAVEASHTML(Path + '\' + DELCHR(PageCountReport.OBJECTID) + '.html') THEN
BEGIN
TotalNoOfPages := PageCountReport.GetTotalNoOfPages;
CLEAR(PageCountReport);
FileSystem.DeleteFolder(Path);
END;
CLEAR(FileSystem);
// - Zurücksetzen beim Stapeldruck
PageCountReport.ClearCountTotalPages;
// +
ClearCountTotalPages()
CountTotalPages := FALSE;