Hardware-Inventar mit Access
Ziel:
Kleine Datenbank für die Hardware-Inventarisierung, inkl. Namensgenerator
AlohA!
Ich möchte mir eine kleine Access-Datenbank stricken, in der ich meine Hardware inventarisiere.
Soweit so gut, da sie nur mit ein paar Datensätzen und wenigen Informationen starten soll.
Mein Problem ist, dass ich innerhalb der Datenbank gleichzeitig die Namen für die Geräte generieren möchte. Die Namensnorm ist schon festgelegt und auch schon in der Umsetzung. D.h. werden Geräte installiert, bekomme sie schon den Namen der Norm entsprechend.
Folgende Struktur ist bei uns gültig:
AA-BB-CC-DD-###
AA = Länderkürzel nach ISO
BB = Kürzel des Standortes
CC = Kürzel der Abteilung
DD = Kürzel des Geräte-Typs
### = dreistellige Zahl
Die Kürzel sind in Tabellen hinterlegt. Die Zahlen sollen hochgezählt werden. Jetzt möchte ich so etwas wie einen Namensgenerator erstellen. Über eine Maske wähle ich die Kürzel aus und Access soll mir die nächste freie Nummer anhängen. Nächste freie Nummer heißt in diesem Fall, wenn das Gerät mit dem Namen DE-DD-SA-DT-002 ersetzt wird und der nächste Desktop im Vertrieb des Standortes installiert wird, möchte ich die 002 bekommen und nicht die nächste freie Nummer nach dem Hochzählen. Access soll also nicht einfach hochzählen, sondern auch Lücken erkennen und diese erst auffüllen, bevor eine neue Kennung erstellt wird.
Ich hoffe ich habe mich klar genug ausgedrückt, damit ihr mir helfen könnt.
Danke für eure Hilfe!
Grüße,
Crustacean
Kleine Datenbank für die Hardware-Inventarisierung, inkl. Namensgenerator
AlohA!
Ich möchte mir eine kleine Access-Datenbank stricken, in der ich meine Hardware inventarisiere.
Soweit so gut, da sie nur mit ein paar Datensätzen und wenigen Informationen starten soll.
Mein Problem ist, dass ich innerhalb der Datenbank gleichzeitig die Namen für die Geräte generieren möchte. Die Namensnorm ist schon festgelegt und auch schon in der Umsetzung. D.h. werden Geräte installiert, bekomme sie schon den Namen der Norm entsprechend.
Folgende Struktur ist bei uns gültig:
AA-BB-CC-DD-###
AA = Länderkürzel nach ISO
BB = Kürzel des Standortes
CC = Kürzel der Abteilung
DD = Kürzel des Geräte-Typs
### = dreistellige Zahl
- Beispiel
- DE-DD-SA-DT-001
Die Kürzel sind in Tabellen hinterlegt. Die Zahlen sollen hochgezählt werden. Jetzt möchte ich so etwas wie einen Namensgenerator erstellen. Über eine Maske wähle ich die Kürzel aus und Access soll mir die nächste freie Nummer anhängen. Nächste freie Nummer heißt in diesem Fall, wenn das Gerät mit dem Namen DE-DD-SA-DT-002 ersetzt wird und der nächste Desktop im Vertrieb des Standortes installiert wird, möchte ich die 002 bekommen und nicht die nächste freie Nummer nach dem Hochzählen. Access soll also nicht einfach hochzählen, sondern auch Lücken erkennen und diese erst auffüllen, bevor eine neue Kennung erstellt wird.
Ich hoffe ich habe mich klar genug ausgedrückt, damit ihr mir helfen könnt.
Danke für eure Hilfe!
Grüße,
Crustacean
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 120012
Url: https://administrator.de/contentid/120012
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
da wirst Du eine kleine Funktion schreiben müssen.
Du suchst dir z.B. mit "Dlookup" die Werte von "Min" und "Max" des Suffix ### und durchläufst eine Schleife, beginnend von Min + 1 bis Max.
In der Schleife dann jedesmal schauen ob der Wert schon vorhanden ist, wenn ja, nehmen und beenden, wenn nein, Wert + 1 und weitersuchen.
Gruß René
da wirst Du eine kleine Funktion schreiben müssen.
Du suchst dir z.B. mit "Dlookup" die Werte von "Min" und "Max" des Suffix ### und durchläufst eine Schleife, beginnend von Min + 1 bis Max.
In der Schleife dann jedesmal schauen ob der Wert schon vorhanden ist, wenn ja, nehmen und beenden, wenn nein, Wert + 1 und weitersuchen.
Gruß René
Hallo,
o.k. hier eine kleine Funktion zu dem Thema.
Folgende Annahmen:
1. Tabelle "INVENTAR" mit einer Spalte "Inventarnummer"
in diese Tabelle existieren Eintrage in der Form DE-DD-SA-DT-### wobei für ### 001 bis 999 steht
2. Lücken in ### suchen, dazu Funktion "f_freieNrsuchen" aufrufen mit Parameter Präfix z.B. f_freieNrsuchen("DE-DD-SA-DT-")
3. die Funktion liefert erste freie Suffix-Nummer
Achtung, die Funktion liefert die Nummer als Integer, muss also in Text formatiert werden
Gruß René
o.k. hier eine kleine Funktion zu dem Thema.
Folgende Annahmen:
1. Tabelle "INVENTAR" mit einer Spalte "Inventarnummer"
in diese Tabelle existieren Eintrage in der Form DE-DD-SA-DT-### wobei für ### 001 bis 999 steht
2. Lücken in ### suchen, dazu Funktion "f_freieNrsuchen" aufrufen mit Parameter Präfix z.B. f_freieNrsuchen("DE-DD-SA-DT-")
3. die Funktion liefert erste freie Suffix-Nummer
Achtung, die Funktion liefert die Nummer als Integer, muss also in Text formatiert werden
Public Function f_freieNrsuchen(strPräfix As String) As Integer
Dim varMin, varMax, varHelp
Dim strBedingung
Dim i As Integer
varMax = DMax("Right$(Inventarnummer,3)", "INVENTAR", "Inventarnummer like '" & strPräfix & "*'")
If IsNull(varMax) Then
f_freieNrsuchen = 1 ' kein Eintrag für diesen Präfix gefunden, also 1
Exit Function
End If
varMin = DMin("Right$(Inventarnummer,3)", "INVENTAR", "Inventarnummer like '" & strPräfix & "*'")
If varMin > 1 Then
f_freieNrsuchen = 1 ' die 1 ist nicht belegt, also kann 1 benutzt werden
Exit Function
End If
For i = CInt(varMin) To CInt(varMax)
varHelp = DLookup("Right$(Inventarnummer,3)", "INVENTAR", "Inventarnummer = '" & strPräfix & Format$(i, "000") & "'")
If IsNull(varHelp) Then
f_freieNrsuchen = i
Exit Function
End If
Next i
' keine Lücke gefunden, also varMax + 1
f_freieNrsuchen = CInt(varMax) + 1
End Function
Gruß René