1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Problemstellung:
Manchmal benutzt man eine fortlaufende Nummerierung.
Wenn diese kein Autowert ist möchte man vielleicht manchmal fehlende Nummern (durch Löschung o.ä.) wieder verwenden.
Dies manuell zutun wäre etwas mühselig, aber das kann auch MS-Access.

Lösung:

In der Tabelle in der eine lfd. Nummer eingetragen werden soll muss natürlich das Feld vorhanden sein.

Wir nehmen als Bsp. mal die Tabelle "tbl_Test" und das Feld soll "ArchivNr" lauten.
 
 
 
freenumber1
Jetzt kommen wir zur eigentlichen Funktion zum Ermitteln der Nummer/Zahl.
Public Function GetNextFreeNumber(rRS As DAO.Recordset, sField As String) As Long
     Dim n As Long
     Dim nMaxNumber As Long
     Dim sNumber As String
 
    'Recordset sortieren und höchsten Wert ermitteln
     rRS.Sort = sField
     rRS.MoveLast
     nMaxNumber = rRS(sField)
 
    'DS im Recordset durchlaufen
     'Prüfen ob Nummer vorhanden
     For n = 1 To nMaxNumber
         sNumber = sField & "=" & n
         With rRS
             .FindFirst sNumber
             If .NoMatch = True Then
                 'Wenn Nummer nicht vorhanden = Nummer Zähler n
                 GetNextFreeNumber = n
                 Exit For
             Else
                 'Wenn Nummer vorhanden; höchster Wert+1
                 GetNextFreeNumber = nMaxNumber + 1
             End If
         End With
     Next n
 End Function

Diese Funktion durchläuft das übergebene Recordset und prüft im angegebenen Feld ob
alle Nummern/Zahlen vorhanden sind. Sind alle vorhanden wird der höchste Wert mit 1 addiert.
Fehlt eine Nummer/Zahl wird die Schleife verlassen und die Funktion gibt die fehlende Nummer/Zahl zurück.

Aufruf:
Private Sub Befehl3_Click()
     Dim rs As DAO.Recordset
     Set rs = CurrentDb.OpenRecordset("tbl_Test", dbOpenDynaset)
 
    MsgBox "Nächste freie Nummer= " & GetNextFreeNumber(rs, "ArchivNr")
     rs.Close
 End Sub

Ergebnis:



Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Gibt es eine Möglichkeit SQL-Code einer Abfrage so zu konvertieren das der Code in VBA genutzt werden kann? Lösung: Bis Access 2010 gibt das Tool "SmartTools SQL aus Abfragen 3.0"...
1.png2.png1.png2.png7.png2.png6.png
Heute26
Gestern105
Diese Woche234
Dieser Monat1526
Total1212726

  • IP: 52.6.70.202
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

2
Online

19. Dezember 2018

Letzte Kommentare

  • Trusted Locations Manager

    Tommy Admin 13.07.2018 13:06
    RE: Trusted Locations Manager
    Hallo Matthias, aus Ermangelung einer 64bit Version kann ich das leider nicht prüfen. Tut mir leid. Gruss ...

    Weiterlesen...

     
  • Trusted Locations Manager

    Matthias 13.07.2018 06:48
    Funktioniert nicht
    Habe gerade den TL-Manager installiert. Nach dem Start sagt er mir, dass es kein Office erkennen ...

    Weiterlesen...