Beiträge von jo@chim

    getDocumentByKey wird da nicht gehen, denn dazu brauchst du die letzte Nummer. Besser wäre dann eine Ansicht absteigend sortiert nach Nummer und per GetFirstEntry den ersten Eintrag holen. Dann die Nummer um eines hochzählen.

    Ja klar, sorry. war da zu sehr bei meinem eigenen Skript :-)Ich vergebe Nummern in der Form Jahr-Doknr (... 16-000123...) und hole aus dem - natürlich absteigend - sortierten Nummernkreis das letzte Dokument des akt. Jahres per

    Code
    Set doc=view.GetDocumentByKey( actyear$ , True )


    anschliessend zähle ich hoch:


    Code
    n%=CInt(Right(doc.lfdNr(0),5))+1
    projektid$=actyear$+"-"+Format(CStr(n%),"00000")

    Agent, der nur auf der Master-Replik läuft, anstatt eigene Nummern-DB geht natürlich auch.

    Obacht! Dein Vorgehen ist - zumindest wenn Du es nicht wirklich nur ein allereinziges Mal verwendest - der sicherste Weg, doppelte Nummern zu erzeugen: db.Search ist eine Abfrage, die auf dem Datenbankindex beruht... der nicht zeitnah aktualisiert wird.


    Du kannst einen View mit den existierenden Nummern erstellen - erste sortierte Spalte die Nummer - und per view.getDocumentByKey(searchkey$, true) oder per Formel abfragen; dann jeweils eine Nummer hochzählen.
    Wenn Du mehrere Repliken Deiner Datenbank hast, wirst Du allerdings auch damit doppelte Nummern kriegen.


    Ich habe das Problem in einer Umgebung mit 12 internationalen Servern so gelöst, dass ich eine "Nummern-Datenbank" auf unserem Masterserver habe, in der die laufenden Dokumentnummern abgelegt und aufgerufen werden.
    Das funktioniert hinreichend sicher.

    Zitat

    (Gibt ein automatisches Öffnen im Bearbeitungsmodus?)


    Designeransicht "Eigenschaften Maske" -> zweiter Reiter "Vorgaben" -> dritte Option "Bearbeitungsmodus automatisch aktivieren"


    Falls Du die Daten in den Antwortdokumenten zur Prüfung darstellen willst, würde ich eine eingebettete Ansicht mit entsprechenden Summenspalten nehmen. Weiterverarbeiten wie von Diali vorgeschlagen.