martenk
Goto Top

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

Content-Key: 666735

Url: https://administrator.de/contentid/666735

Printed on: April 18, 2024 at 09:04 o'clock

Member: em-pie
em-pie May 14, 2021 at 13:39:22 (UTC)
Goto Top
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 face-smile

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
Member: martenk
martenk May 14, 2021 at 13:54:54 (UTC)
Goto Top
hi,

lieben Dank - ich habe es ein wenig anders - ich wähle aus, welche Datensätze ausgedruckt werden - also ich brauche eine fortlaufende Nummerierung der ausgedruckten Datensätze
Member: SlainteMhath
SlainteMhath May 14, 2021 at 14:22:55 (UTC)
Goto Top
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
Member: HansDampf06
HansDampf06 May 14, 2021 at 14:30:22 (UTC)
Goto Top
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
Member: mbehrens
mbehrens May 14, 2021 at 14:38:51 (UTC)
Goto Top
Zitat von @martenk:

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.
Member: martenk
martenk May 14, 2021 at 14:46:55 (UTC)
Goto Top
wie meinst du das ? - ich muss die variable ja irgendwo hinschreiben

oben wurde gefragt: es ist eine Access DB
Member: mbehrens
mbehrens May 14, 2021 at 15:27:32 (UTC)
Goto Top
Zitat von @martenk:

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
Member: em-pie
em-pie May 14, 2021 at 16:03:48 (UTC)
Goto Top
Muss eigentlich sichergestellt werden, dass eine fortlaufende Nummer über ALLE Belege nur eindeutig vorhanden sein dürfen?

Was passiert, wenn ein Datensatz noch einmal gedruckt wird?


Ansonsten suche mal nach SQL row number
Member: akretschmer
akretschmer May 14, 2021 at 20:15:13 (UTC)
Goto Top
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.