Wird in einem Bericht die Fetch Methode überschrieben sollte man drauf achten, dass die Standardfunktionen auch noch richtig funktionieren. Ein gutes Beispiel hier sind die Einstellungen im Seitenbereich.

Wird in der Fetch Methode nicht super() aufgerufen und mit einer individuellen Abfrage gearbeitet, welche die Daten dem Bericht übergibt, werden die Einstellungen in der Gruppe "Seitenbereich" meist ignoriert. Es werden dann zwar nur die angebenden Seiten gedruckt, die Abfrage wird aber weiter durchgeführt. Das führt dann dazu, dass immer abgewartet werden muss bis die komplette Abfrage ausgeführt wurde, obwohl man evtl. nur einen kleinen Bruchteil der Daten (wie z.B. die erste Seite) benötigt.
Das kann man ganz einfach verhindern indem in der Fetch Methode abgefragt wird, ob die Daten an den Bericht gesendet wurden. Hierzu wird die send(...) Methode benutzt.
public boolean fetch()
{
Query queryBuild;
QueryRun queryRunBuild;
InventTrans iTrans;
;
if (this.prompt())
{
queryBuild = this.query();
queryRunBuild = new QueryRun(queryBuild);
while (queryRunBuild.next())
{
iTrans = queryRunBuild.get(tablenum(InventTrans));
// Wurde der aktuelle Datensatz ausgeben
if (!this.send(iTrans))
return true;
}
}
return true;
}
Es muss also immer überprüft werden, ob die Daten gedruckt werden oder nicht. Das passiert mit:
if (!this.send(meineDaten))
return true;