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

Problemstellung:

Für 32Bit und 64Bit Office Versionen

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:



You have no rights to post comments

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Nur für 32Bit Office Versionen 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...
1.png6.png5.png3.png8.png8.png8.png
Heute126
Gestern243
Diese Woche126
Dieser Monat2070
Total1653888

  • IP: 18.97.9.169
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

09. Dezember 2024

Letzte Kommentare

  • Berechnen von Zeiträumen als Abfragekriterium

    elmard 02.02.2021 21:02
    1000 Dank
    für diese Datenbankanwendung! Eine sehr gute Umsetzung mit den vielen Möglichkeiten des Datums.

    Weiterlesen...

     
  • SQL zu VBA Konverter

    Tommy Admin 03.11.2019 16:33
    RE: SQL zu VBA Konverter
    Hallo Elmard, danke für die Info. :lol:

    Weiterlesen...

     
  • SQL zu VBA Konverter

    elmard 03.11.2019 14:49
    Bei SmartTools neue Version 4.0
    Dieses Tool liegt inzwischen in der Version 4 vor und läuft nun auch von A2013 und A2016 sowie im ...

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    TommyK 27.02.2019 06:52
    Workshop
    Hallo mpegjunkie, danke für Dein Feedback. Schön das Dir Workshop weiter hilft. :D

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    mpegjunkie 26.02.2019 20:10
    Perfekter Workshop
    Hallo Tommy, perfekter Workshop, toll und umfassend erläutert. Jetzt nutze ich diese Controls auch.

    Weiterlesen...