0

Posten in Rechnungen automatisch nummerieren

In der Tabelle RECHNUNGEN gibt es eine verknüpfte Tabelle POSTEN. Hier werden alle Rechnungsposten zusammengtragen und anhand Positionsnummern aufsteigend aufgelistet. Nun möchte ich die Positionsnummer im Feld POS automatisch bei neuem Datensatz in POSTEN erstellen, sofern diese zur selben Rechnung gehören. Wie mache ich das?

Habs in POSTEN so versucht "Bei neuem Datensatz folgendes Skript ausführen":

let myR := Rechnungen;
Pos := max((select Posten where Rechnungen = myR).Pos) + 1

geht leider nicht. Danke vorweg.

2 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,

    wie werden die Posten erstellt? 

    Es ist bei untertabellen so: beim Klick auf Plus-Zeichen unter der Untertabelle wird zuerst ein neuer Datensatz erstellt, dann die Skripte "bei neu" ausgeführt und erst dann kommt die Verknüpfung zu der Haupttabelle. Das heißt, dass im moment der Positionvergabe weiß der Datensatznoch nicht, dass er zu der Haupttabelle gehört und der Skript läuft dann in leere.

    Abhilfe kann der button schaffen:

    ---

    let me:=this;
    let new:=create Posten;
    new.Rechnungen:=me;
    new.Pos:=max(new.Recnungen.Posten.Pos)+1

    ---

    Leo

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Leo, danke. Jetzt weiß ich endlich, warum auch meine Mühe ins Leere lief. Immer wieder lese ich gern Deine Erklärungen.
    Hi, Reinhard. Mein Workaround war, im Datensatz ein Feld zu nehmen, welches voraussichtlich nach Erstellung nicht geändert wird (bei mir ist es Anzahl) und bei "nach Änderung..." einzutragen: Pos:=cnt(Rechnungen.Posten)