PDA

Vollständige Version anzeigen : fortlaufende Nummer in Untergruppen


Marco182
18.10.2011, 08:11
Hallo zusammen,
ich habe ein kleines Code-Problem. Es geht darum dass ich eine fortlaufende Nummer innerhalb einer Unterkategorie vergeben möchte.
Beispiel: Es gibt 3 Kombi-felder: (Kombi1, Hauptgruppe, Untergruppe), diese kann ich beliebig zusammensetzen, je nach Einsatz.

Kombi1 Hauptgruppe Untergruppe
AAA 123 zyx
BBB 456 wtu

heißt man kann z.B. folgenden zusammengesetzen Namen bilden:
AAA_123_zyx
AAA_456_zyx
BBB_123_wtu
BBB_456_zyx

dahinter soll nun noch eine laufende Nummer innerhalb dieser 3 Elemente, so dass man etwas erhält wie:
AAA_123_zyx_1
AAA_123_zyx_2
AAA_123_zyx_3
AAA_456_zyx_1
BBB_456_zyx_1
BBB_456_zyx_2

Ziel ist diese Zeichenfolge als eindeutige Zuordnung benutzen zu können.

Ich hatte einen ähnlichen Code schon einmal verwendet, aber da waren die Untergruppen den Hauptgruppen zugeordnet, hier ist es komplett variabel und trotzdem bräuchte ich dann eine fortlaufende Nummer am Ende. Der code unten funktioniert nur teilweise, ich habe den Eindruck dass er an dem variablen Zusammenbauen scheitert und mir teils seltsame fortlaufende Nummern ausgibt, wenn ich es teste.

Hier der Code:

Private Sub Untergruppe_AfterUpdate() ' °Sieht nach welche die zuletzt vergebene Nummer der Untergruppe ist und erhöht dies um 1°
strKrit = "Abteilung='" & Me!Kombi1& "' AND Kombi1='" & Me!Hauptgruppe & "' AND Untergruppe='" & Me!Untergruppe & "'"
If IsNull(DLookup("lfd_nr", "Tabelle", strKrit)) = True Then
Me!lfd_nr = 1
Else
Me!lfd_nr = (DMax("lfd_nr", "Tabelle", strKrit) + 1)
End If
End Sub

Ich weiß aber leider nicht wo der Fehler liegen könnte, da ich von solchen Codes leider nicht viel Ahnung habe, sieht jemand meinen Fehler?

vielen Dank!!
Marco

Marco182
18.10.2011, 08:14
Leider war ein kleiner Fehler im Code:

Private Sub Untergruppe_AfterUpdate() ' °Sieht nach welche die zuletzt vergebene Nummer der Untergruppe ist und erhöht dies um 1°
strKrit = "Kombi1='" & Me!Kombi1& "' AND Hauptgruppe='" & Me!Hauptgruppe & "' AND Untergruppe='" & Me!Untergruppe & "'"
If IsNull(DLookup("lfd_nr", "Tabelle", strKrit)) = True Then
Me!lfd_nr = 1
Else
Me!lfd_nr = (DMax("lfd_nr", "Tabelle", strKrit) + 1)
End If
End Sub

Atrus2711
18.10.2011, 08:30
Hi,

wenn die Nummer wirklich von allen 3 Feldern abhängen soll, sieht das ganz ok aus, auch wenn du die IF-Konstruktion durch ein NZ(Dmax(...), 0) +1 ersetzen kannst. Zweifel habe ich allerdings am Ereignis: der zählt, wenn der Satz angelegt wurde. Sollte das nicht BeforeUpdate sein?

Marco182
18.10.2011, 09:02
Ah super danke, das habe ich direkt mal umgebaut und dabei auch meinen Fehler gefunden - ganz peinlich, ich hatte ein weiteres Kombifeld, das man ganz am Anfang auswählt, vergessen mit in den Code aufzunehmen :-| So konnte der ja nur Murks produzieren...

Ich lasse den Code ausführen, nachdem man das Letzte Element ausgewählt hat.

Danke nochmal!