Üblicherweise sorgt man direkt in Berichten für das Ausgeben von Datensätzen in der richtigen Anzahl. Stichwörter für eine diesbezügliche Suche in der Onlinehilfe sind MoveLayout, NextRecord und PrintSection.
In diesem Artikel sollen diese Methoden außen vor bleiben: Sie sorgen dafür, dass man eine gute Portion VBA zu einem Bericht hinzufügen muss, bevor man diesen dazu bringt, die Datensätze in der in einem zusätzlichen Feld angegebenen Anzahl auszugeben. Es wäre doch viel einfacher, wenn man die Datenherkunft irgendwie für diesen Zweck vorbereiten könnte.
Die Testdaten für diese Lösung stammen mal wieder aus der Nordwind-Datenbank – in diesem Fall handelt es sich um die Tabelle Kunden (Bild 1). Egal, ob man die Kunden über die Methoden MoveLayout, NextRecord oder PrintSection ausgeben möchte oder die hier vorgestellte Technik verwendet: Die Tabelle benötigt auf jeden Fall ein Feld, in das Sie die Anzahl der pro Datensatz zu druckenden Exemplare eintragen können. Dieses fügen Sie einfach hinzu.
Ideen zum Vervielfältigen von Datensätzen
Es gibt immer mindestens zwei Wege, eine Aufgabe mit Access zu erledigen. Das Ziel ist ja, eine Datenherkunft für einen Bericht zu schaffen, die Datensätze aus der Tabelle Kunden in der angegebenen Anzahl enthält. Die erste, weniger elegante Variante besteht im Einsatz einer kleinen VBA-Prozedur, die einfach jeden Datensatz durchläuft und diesen so oft in eine neue, temporäre Tabelle einträgt, wie es im Feld Anzahl angegeben ist. Das ist aber eher die Holzhacker-Methode. Viel eleganter und auch schneller erledigt die Aufgabe eine Abfrage. Nur wie?
Mehrfache Datensätze per Abfrage
Ohne Tricks funktioniert das in der Tat nicht. Zunächst einmal benötigen Sie eine zusätzliche Tabelle namens tblAnzahlen, die lediglich ein Feld enthält – und mit allen zu erwartenden Anzahlen gefüllt ist.
Und nun kommt der Clou: Legen Sie eine neue Abfrage an, die die Tabellen Kunden und tblAnzahlen enthält – allerdings ohne irgendwelche Beziehungen. Fügen Sie alle Felder der Tabelle Kunden mit Ausnahme des Feldes Anzahl sowie das Feld Anzahl der Tabelle tblAnzahlen in das Entwurfsraster ein. Nun fehlt nur noch eine kleine Bedingung, die Sie für das Feld Anzahl angeben:
<=[Kunden].[Anzahl]
Fertig! Die fertige Abfrage sollte im Entwurf nun wie in Bild 2 aussehen, und das Ergebnis finden Sie in Bild 3.