Hinweis: Eintrag wurde aus altem Forum importiert. Ggf. kann es dadurch zu Darstellungsproblemen kommen.
@Dobingo:
Wie sieht Dein Lösungsansatz im Detail aus? (...man lernt ja nie aus)
___
Hallo Adriano,
ich wollte Dir mal einen Lösungsansatz mitteilen:
Zunächst mußt Du die "Lücken" herausfinden, d.h. Du baust Dir eine 2. Datenbank auf, die die Felder "eins", "Vergeben" (Text) und "Nummer" enthält. Das Feld "Nummer" als Zahl mit fortlaufender Nummer definieren (Startwert 1). Das Feld "eins" ist eine Formel mit
Wert = 1, Zahl (brauchst Du für eine 1:1-Beziehung). Jetzt mach noch ein Feld "Nummer_VAR", dass Du als Variablenfeld Zahl definierst.
-
Dann setzt Du eine Beziehung zwischen dem Seriennummernfeld Deiner Hauptdatenbank und dem "Nummer"-Feld der 2. Datenbank. Dein Feld "Vergeben" definierst Du als Formelfeld
Wenn(2.Datenbank:"Nummer" = Hauptdatenbank:"Seriennummer"; "x"; "")
-
Definiere in Deiner Hauptdatenbank auch ein Feld "eins" als Formel mit Wert = 1. Lege noch ein Feld "Hilfsfeld_Nummer" an, dass Du als Variable, Zahl definierst. Baue eine Beziehung zur zweiten Datenbank mit den Feldern "eins" - "eins" auf. Jetzt importierst Du alle Excel-Tabellen in Deine Hauptdatenbank. Stelle die höchste Nummer Deiner Excel-Nummern fest (z.B. 950) und stelle die Nummer der importierten
Datensätze fest (z.B. 800 Stk.). Die Differenz ergibt, dass es 150 freie Nummern geben muss.
-
Lege nun auf der 2. Datenbank 950 neue Datensätze an. Die "Nummer"-Felder befüllst Du mit fortlaufenden Nummern (1 bis 950). Das Feld "Vergeben" zeigt nun 800 mal "x" an. Diese Nummern sind in der Hauptdatenbank also bereits belegt. 150 Nummern sind nicht belegt, also nun frei zur Vergabe.
-
Schreibe in das Feld "Hilfsfeld_Nummer" der Hauptdatenbank den größten Wert der 2. Datenbank rein (hier also 950), so weis das Programm, ab wann es mit den Seriennummern weitergeht, wenn aus der 2 Datenbank keine Nummern mehr zur Verfügung stehen.
Jetzt schreibe in der Hauptdatenbank ein Script "Freie Nummer suchen". Das Script sollte wie folgt aussehen:
-> Script ausführen[Teilscripts, Extern: "2. Datenbank"] und ruft dort das Script "Freie Nummer suchen" auf.
Jetzt noch ein zweites Script "Neuen Datensatz anlegen":
-> Neuer Datensatz
-> Wenn [2.Datenbank:Nummer_VAR = """"]
-> Feld angeben ["Seriennummer", "Hilfsfeld_Nummer + 1"]
-> Feld angeben ["Hilfsfeld_Nummer", "Seriennummer"]
-> Script verlassen
-> Sonst
-> Feld angeben ["Seriennummer", "2.Datenbank:Nummer_VAR"]
-> Script verlassen
-> Ende-Wenn
-
So, jetzt brauchst Du noch das "Gegenscript" in der 2. Datenbank, dass Du einfach auch "Freie Nummer suchen" nennst:
-> Fehleraufzeichnung setzen [Ein]
-> Alle Datensätze anzeigen
-> Feld angeben ["Nummer_VAR", """"]
-> Suchen aktivieren []
-> Feld angeben ["Vergeben", ""=""]
-> Suchen []
-> Wenn ["Status(AktuellFehler = 401"]
-> Fehleraufzeichnung setzen [Aus]
-> Script ausführen[Teilscripts, Extern: "Hauptdatenbank"] <- Script "Neuen Datensatz anlegen"
-> Sonst
-> Fehleraufzeichnung setzen [Aus]
-> Sortieren[ nach Feld "Nummer" aufsteigend" ]
-> Gehe zu Datensatz Erster
-> Feld angeben ["Nummer_VAR", "Nummer"]
-> Script ausführen[Teilscripts, Extern: "Hauptdatenbank"] <- Script "Neuen Datensatz anlegen"
-> Ende-Wenn
Wenn Du jetzt von der Hauptdatenbank aus das Script "Freie Nummer suchen" aufrufst, dann wird zuerst geprüft, ob noch eine freie Nummer vorhanden ist. Ist eine vorhanden, so wird diese benutzt / keine mehr vorhanden, dann wird immer die letzte Nummer aus "Hilfsfeld_Nummer" + 1) verwendet, also aufsteigend neue Nummern.
So, das war schon alles ;-)
Ich hoffe, Dein Problem ist damit gelöst.
Ich schicke Dir noch die Testdatei fp5 per E-Mail.