Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Berichtsausdrucke fortlaufend nummerieren





Frage

Hallo zusammen, ich habe mir zur Lagerverwaltung eine Datenbank angelegt mit Kundenname, Artikelbezeichnung, Artikelspezifikationen. Außerdem habe ich noch ein Tabellenfeld "Palettenanzahl" erstellt. Nun habe ich einen Bericht "Paletten-Stellplatzzettel" mit allen relevanten Daten angelegt. Im Eingabeformular habe ich den Druckbutton mit einem Makro hinterlegt, der mir den Bericht, entsprechend der Eingabe im Feld "Palettenanzahl", beliebig oft ausdruckt. Ich möchte aber außerdem, dass auf den Ausdrucken erscheint: "Palette m von n". Meine Idee wäre gewesen, dies über ein Textfeld nach dem Muster ("Palette" & [Seite] & "von" & [Seiten]) zu lösen, dazu müsste mein Makro den aktuellen Datensatz aber erst entsprechend der Eingabe "Palettenanzahl" vervielfältigen. Ich denke, das ist auch nicht die perfekte Lösung, zumal ich nicht weiß, wie ich das bewerkstelligen soll. Wer hat einen Lösungsvorschlag für mein Problem? Vielen Dank schon mal!

Antwort 1 von oliverV

Hallo,

erstelle in deinem Bericht ein ungebundenes Textfeld mit dem Namen "Palettenzähler".

Erstelle nun in deinem Druckformular eine Schaltfläche.
Wechsele in die Schaltflächen-Eigenschaften zu dem Ereignis BeimKlicken, klicke auf die 3 Punkte am Ende des Feldes und öffne damit den Code-Generator.
Trage zwischen
Privat Sub Schaltflächenname_Click()
und
End Sub
sinngemäß folgenden Code ein:

[Code]
Dim anzahl, i As Long

anzahl = InputBox("Wie oft soll gedruckt werden?")
DoCmd.OpenReport "Paletten-Stellplatzzettel", acViewPreview
For i = 1 To anzahl
Reports![Paletten-Stellplatzzettel]![Palettenzähler] = "Palette " & i & " von " & anzahl & "Paletten "
DoCmd.PrintOut
Next
DoCmd.Close acReport, "Paletten-Stellplatzzettel"
[/Code]

Anmerkung:
Die Zeile
[Code]
Reports![Paletten-Stellplatzzettel]![Palettenzähler] = "Palette " & i & " von " & anzahl & "Paletten "
[/Code]
muß einzeilig sein, wird hier aber aus Platzgründen nicht korrekt dargestellt.

In dieser Variante öffnet sich nach dem Klicken auf die Schaltfläche eine InputBox mit der die Anzahl der Ausdrucke abgefragt wird.
Du kannst diese Inputbox auch durch einen Formularbezug ersetzten, wenn du z.B. ein vorhandenes Anzahlfeld im Formular nutzen willst.

Gruß

Oliver

Antwort 2 von pet-ix

Hallo Oliver,

danke für die schnelle Hilfe, es klappt auch schon fast !

Ich habe die Inputbox durch das Steuerelement "Palettenanzahl" ersetzt, das funzt.

Aber leider werden immer alle Datensätze der Quell-Tabelle ausgedruckt (auch über die Inputbox). Bei meinem ursprünglichen Druckmakro hatte ich das mit der Bedingung [Fortlaufende Nummer]=Formulare![Lagerverwaltung]![Fortlaufende Nummer] gelöst.

Wie lautet die Befehlszeile im Code-Generator?

Vielen Dank!

pet-ix

Antwort 3 von oliverV

Sorry ich kann dir nicht ganz folgen.
Das Formularfeld "Palettenanzahl" (oder die Inputbox) dient lediglich dazu die Anzahl der Ausdrucke festzulegen.
Dient das Feld "Fortlaufende Nummer" dazu die Datensatze im Bericht einzuschränken (wie z.B. die Einschränkung über eine Kundennummer) ?
Du kannst die Datensätze des Berichts einschränken indem du das Kriterium bei der OpenReport-Methode übergibst (schau mal in der VB-Onlinehilfe).
Alternativ kannst du auch die Einschränkung in der Datenherkunft des Berichts vornehmen, indem du dort bei dem betreffenden Feld im Kriterium einen Formularverweis setzt.
z.B. =Formulare![Lagerverwaltung]![Fortlaufende Nummer]
Bei der Alternative erscheint allerdings eine Parameterabfrage wenn du den Bericht aus dem Datenbankfenster heraus öffnest, ohne das dein Druckformular geöffnet ist.

Ging mein Tipp in die richtige Richtung ?

Gruß

Oliver

Antwort 4 von pet-ix

Hallo Oliver,

ich bin jetzt ein Zeit lang nicht zum Basteln gekommen.

Das Feld "Fortlaufende Nummer" ist sozusagen eine Artikelnummer, die als AutoWert vergeben wird. Mit dieser kann ich den Bericht eindeutig filtern, wie du ja richtig vermutet hast.

Ich habe jetzt deine neuen Tipps umgesetzt und die Bedingung [Fortlaufende Nummer]=Formulare![Lagerverwaltung]![Fortlaufende Nummer] dem Bericht als Filter übergeben. Die Parameterabfrage stört nicht, da in der Datenbank nicht vorgesehen ist, den Bericht aus dem Datenbankfenster zu öffnen (die komplette Datenbanksteuerung läuft über ein Startformular).

Soll heißen: In der Datenbank funzt jetzt alles so wie gewollt. Vielen Dank für deine super Hilfe !

Gruß

pet-ix

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: