Laufende Nummer in Access einfügen
Hallo Gemeinschaft,
ich habe eine Abfrage durchgeführt und lasse mir die Datensätze ausdrucken. Nun benötige ich allerdings einen Zähler auf dem ausgedruckten Dokument.
Ich wollte es gerne so haben, dass auf den Dokumenten eine laufende Nummer gedruckt wird, diese Nummer dem Datensatz wieder zugefügt wird - und ich ausserdem dem Datensatz ein Attribut anhänge - ausgedruckt am
könnt ihr mir dabei helfen
ich habe eine Abfrage durchgeführt und lasse mir die Datensätze ausdrucken. Nun benötige ich allerdings einen Zähler auf dem ausgedruckten Dokument.
Ich wollte es gerne so haben, dass auf den Dokumenten eine laufende Nummer gedruckt wird, diese Nummer dem Datensatz wieder zugefügt wird - und ich ausserdem dem Datensatz ein Attribut anhänge - ausgedruckt am
könnt ihr mir dabei helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666735
Url: https://administrator.de/forum/laufende-nummer-in-access-einfuegen-666735.html
Ausgedruckt am: 02.04.2025 um 11:04 Uhr
9 Kommentare
Neuester Kommentar
Moin,
also früher hat man der dahinterstehenden Tabelle ein Feld "ID" mitgegeben.
Dieses Feld hatte den Typ "Autoincrement" und wurde bei ANlage eines neuen Datensatzes um eins erhöht.
Sollte heute immer noch so klappen
https://support.microsoft.com/en-us/office/add-an-autonumber-field-as-a- ...
https://www.ms-office-forum.net/forum/showthread.php?t=343599
Gruß
em-pie
also früher hat man der dahinterstehenden Tabelle ein Feld "ID" mitgegeben.
Dieses Feld hatte den Typ "Autoincrement" und wurde bei ANlage eines neuen Datensatzes um eins erhöht.
Sollte heute immer noch so klappen
https://support.microsoft.com/en-us/office/add-an-autonumber-field-as-a- ...
https://www.ms-office-forum.net/forum/showthread.php?t=343599
Gruß
em-pie
Moin,
also ich würde...
0) eine Transaktion beginnen,
1) Die PKs der zu druckenden Datgensätze in eine temp tabelle schreiben (die noch zusätzlich die Felder LfdNummer und GedrucktAm hat)
2) die Tabelle per Dataset durchlaufen und die LfdNr und das Datum setzen
3) die TempTabelle dann per Join in den Report einbinden
4) die Daten aus der TempTabelle wieder in die original Tabelle zurückschreiben
5) und wenn alles ohne Fehler durch ist, die Transaktion commit'en
lg,
Slainte
also ich würde...
0) eine Transaktion beginnen,
1) Die PKs der zu druckenden Datgensätze in eine temp tabelle schreiben (die noch zusätzlich die Felder LfdNummer und GedrucktAm hat)
2) die Tabelle per Dataset durchlaufen und die LfdNr und das Datum setzen
3) die TempTabelle dann per Join in den Report einbinden
4) die Daten aus der TempTabelle wieder in die original Tabelle zurückschreiben
5) und wenn alles ohne Fehler durch ist, die Transaktion commit'en
lg,
Slainte
Dann ist das mit einer einfachen Abfrage nicht zu machen. Welches Datenbanksystem wird denn benutzt?
Sollte es MS SQL Server sein, dann kann eine Procedure erstellt werden. In dieser Procedure wird zunächst eine temporäre Tabelle erstellt, die das von @em-pie beschriebene AutoID-Feld sowie die für den Druck benötigten Datenfelder hat. Dann werden die zum Druck ausgewählten Datensätze in diese Tabelle geladen - gegebenenfalls entsprechend sortiert. Schließlich werden die zum Druck ausgewählten Datensätze im Druckdatum-Feld der originalen Tabelle aktualisiert und der Inhalt der temporären Tabelle wird von der Procedure an den Druckvorgang zurückgegeben.
Alternativ geht es nur in einem Makro oder dergleichen. Es werden zuerst die ausgewählten Datensätze in ein Array geladen und das Array enthält ein Feld, das in einer Schleife entsprechend hochgezählt wird. Danach wird nochmals auf die Datensätze zugriffen und das Druckdatum-Feld aktualisiert. Weiter geht's mit dem Array zur Druckfunktion.
Viele Grüße
HansDampf06
Sollte es MS SQL Server sein, dann kann eine Procedure erstellt werden. In dieser Procedure wird zunächst eine temporäre Tabelle erstellt, die das von @em-pie beschriebene AutoID-Feld sowie die für den Druck benötigten Datenfelder hat. Dann werden die zum Druck ausgewählten Datensätze in diese Tabelle geladen - gegebenenfalls entsprechend sortiert. Schließlich werden die zum Druck ausgewählten Datensätze im Druckdatum-Feld der originalen Tabelle aktualisiert und der Inhalt der temporären Tabelle wird von der Procedure an den Druckvorgang zurückgegeben.
Alternativ geht es nur in einem Makro oder dergleichen. Es werden zuerst die ausgewählten Datensätze in ein Array geladen und das Array enthält ein Feld, das in einer Schleife entsprechend hochgezählt wird. Danach wird nochmals auf die Datensätze zugriffen und das Druckdatum-Feld aktualisiert. Weiter geht's mit dem Array zur Druckfunktion.
Viele Grüße
HansDampf06
ich habe eine Abfrage durchgeführt und lasse mir die Datensätze ausdrucken. Nun benötige ich allerdings einen Zähler auf dem ausgedruckten Dokument.
Einfach eine Variable im Berichtskopf anlegen und passend initialisieren. Diese dann bei jedem Datensatzwechsel erhöhen.
wie meinst du das ? - ich muss die variable ja irgendwo hinschreiben
Nochmal:
- lege eine Variable im Bericht an und initialisiere sie in einem passenden Ereignis
- weise die Variable in einem passenden Ereignis dem Ausgabefeld zu und erhöhe die Variable um eins
also, bei der Abfrage, welche Rows gedruckt werden sollen, stellt sich raus, welche es sind - und damit auch die Numerierung. Das kann also 3 Minten später, nächste Abfrage, anders aussehen. Das kann auch anders ausehen, wenn die Where-Condition anders ist. Oder die Daten selbst. In dem Falle empfehle ich Dinge wie row_number(). Dynamisch zu dem, was als Result der Abfrage bei rauskommt.