Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Sainfeld am November 15, 2018, 22:28:08

Titel: Daten in Gruppen nummerieren
Beitrag von: Sainfeld am November 15, 2018, 22:28:08
Hallo liebe Access Gemeinde,

Ich bin schon wieder am verzweifeln. :-)))

Ich habe eine Liste:

ID,Gebiet
1 A
2 A
3 A
4 B
5 B
6 A
7 A
8 B

Nun brauche ich eine Nummerierung:

ID,Gebiet, Nummer
1 A 1
2 A 1
3 A 1
4 B 2
5 B 2
6 A 3
7 A 3
8 B 4

Hat jemand eine Idee?

Vielen lieben Dank.
Gruss Sainfeld
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: MzKlMu am November 15, 2018, 22:52:10
Hallo,
warum fragst Du in 2 Foren.
Das verstößt gegen die Regeln.
http://www.office-loesung.de/p/viewtopic.php?f=167&t=785306

Zu Deiner Frage:
FAQ 3.11 Laufende Nummer/Summe in Abfragen (http://www.donkarl.com?FAQ3.11)
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: Sainfeld am November 15, 2018, 23:44:26
Hallo Klaus,

In zwei Foren deshalb, weil das andere Forum hier derzeit nur ein Provisorum ist.
Nun zu Deiner Antwort. Schaue bitte meine Liste GENAU an. DonKarls Beispiele bieten dafür leider keine Lösung.

Nach DonKarls Beispiel wäre meine Liste so:
1 A 1
2 A 2
3 A 3
4 B 1
5 B 2
6 A 1
7 A 2
8 B 1

Ich brauche es aber über die Gruppe:

1 A 1
2 A 1
3 A 1
4 B 2
5 B 2
6 A 3
7 A 3
8 B 4
Hast eine Idee?

VG
Sainfeld
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: ebs17 am November 16, 2018, 09:18:52
Ist die Tabelle in dieser Darstellung vollständig oder nur "modelliert"?

Gemäß der vorliegenden Beschreibung macht es nur Sinn, die Tabelle in ein Recordset zu fassen und per einfacher Schleife die Nummern in ein vorhandenes Feld einzutragen, selbstredend mit jeweiliger Prüfung auf den Vorgängerdatensatz.

Ggf. macht es aber auch Sinn, die eigentliche Bedeutung und Verwendung dieser Nummern zu kennen - desweilen soll es ja andere Wege zu einem Ziel geben, die dann ganz anders und gar einfacher sind.
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: Lachtaube am November 16, 2018, 09:20:08
Eine schöne Aufgabenstellung, die mit dem antiquietren SQL-Dialekt von Access jedoch kaum performant zu lösen sein wird - es sei denn, man nutzt temporäre Tabellen, zum Speichern von Zwischenergebnissen. Hier würde ich eher mittels Recordset-Schleife die Daten in ein Zielfeld eintragen. Eine Lösung mit mordernem SQL-Dialekt kann im <dbfiddle> (https://dbfiddle.uk/?rdbms=postgres_11&fiddle=5e7d2a9996ab35d4a6882e0167fe59ec) eingesehen werden (vielleicht hast Du ja einen Datenbank-Server als Backend vorliegen).
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: Sainfeld am November 17, 2018, 18:15:58
@Lachtaube

das sieht gut aus.  :) Ich habe jedoch keine Ahnung, wie ich das in meine Access Datenbank implementieren kann. Ich habe leider keinen Datenbankserver als Backend.

@ebs17
Die Darstellung ist modelliert. Die echte Tabelle (257.000 Datensätze) sieht etwa so aus:

ID; Datum;          strName;  strGebiet; intNum
1  ; 03.12.2016;   Klaus        RO-121
2. ; 04.01.2017;   Klaus        RO-121
3  ; 06.02.2017;   Klaus        RO-121
4  ; 03.03.2017;   Heinz        RO-121
5  ; 04.04.2017;   Heinz        RO-121
6  ; 07.05.2017;   Klaus        RO-121
7  ; 08.06.2017;   Heinz        RO-121
8  ; 09.06.2017;   Heinz        RO-121

Am Ende benötige ich eine Tabelle, die so aussieht:

ID(Pk); DatumAnfang; DatumEnde; strName; strGebiet
1;         03.12.2016;    06.02.2017; Klaus       RO-121
2;         03.03.2017;    04.04.2017; Heinz       RO-121
3;         07.05.2017;    07.05.2017; Klaus       RO-121
4;         08.06.2017;    09.06.2017; Heinz       RO-121

Nun war meine Idee, die Tabelle hoch zu nummerieren:

ID; Datum;          strName;  strGebiet; intNum
1  ; 03.12.2016;   Klaus        RO-121       1
2. ; 04.01.2017;   Klaus        RO-121       1
3  ; 06.02.2017;   Klaus        RO-121       1
4  ; 03.03.2017;   Heinz        RO-121       2
5  ; 04.04.2017;   Heinz        RO-121       2
6  ; 07.05.2017;   Klaus        RO-121       3
7  ; 08.06.2017;   Heinz        RO-121       4
8  ; 09.06.2017;   Heinz        RO-121       4

um in einer Abfrage nach dem Max Wert und MinWert des Datums unter der Bedingung von intNum (aufsteigend) diese Tabelle zu generieren.

Vielen Dank.
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: markusxy am November 17, 2018, 18:40:09
Wie schon Lachtaube schreibt mit Jet SQL nur mit einem Kopfstand umzusetzen.
Der einfache Weg: Daten in ein Recordset laden, per VBA die notwendigen Werte ermitteln und in eine Tabelle schreiben.
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: Lachtaube am November 17, 2018, 18:47:05
In VBA sollte folgende Schleife zum Ziel führen.

   Const QRY As String = _
         "SELECT strName, intNum FROM DerTabellenname ORDER BY ID"

   Dim n As Long
   Dim p As String

   With DBEngine(0)(0).OpenRecordset(QRY, dbOpenDynaset)
      Do Until .EOF
         If n = 0 Then
            n = 1
            p = !strname
         ElseIf !strname <> p Then
            n = n + 1
            p = !strname
         End If
         .Edit
         !intNum = n
         .Update
         .MoveNext
      Loop
      .Close
   End With
Titel: Re: Daten in Gruppen nummerieren
Beitrag von: Sainfeld am November 18, 2018, 11:51:23
@ markus888
@ lachtaube

vielen lieben Dank. Ich werde den Code am Montag gleich mal ausprobieren und danach berichten.

Merci schon mal und ein schönes Wochenende.
LG Sainfeld