0

Mehrere Datensätze mit bestimmtem Inhalt in Untertabelle ändern

Hallo,

Ich habe folgendes Problem:

Ich möchte mehrere "definierte" Datensätze einer Untertabelle als "erledigt" (ja/nein) oder "erledigt am"(Datum) markieren indem ich in der Haupttabelle ein Datum eintrage;

Felder Haupttabelle:

Datum1

Felder Untertabelle:

Textfeld

Auswahlfeld

Datum2

Ja/Nein

 

Variante1

Wenn "Datum1" ausgefüllt wird, dann übertrage bitte das Datum in "Datum2" und setze auf "ja" in alle Datensätze der Untertabelle, dessen Textfeld "zbAnlieferung" enthält.

Variante2:

Wenn "Datum1" ausgefüllt wird, dann übertrage bitte das Datum in "Datum2" und setze "ja" in alle Datensätze der Untertabelle, dessen Auswahlfeld = 1 ist.

Die Datensätze der Untertabelle, die nicht die Bedingung erfüllen, sollen von den Änderungen unberührt bleiben

 

Ich stehe noch ziemlich am Anfang und würde mich über eure Hilfe freuen. Das Problem hat mich jetzt eine Halbe Nacht gekostet :D 

Viele Grüße,

Daniel

2 Antworten

null
    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Daniel,

    das machst Du über eine for-Schleife. Getriggert über das Datumsfeld in deiner Haupttabelle, bei "nach Änderung".

    Die gewählte Variable für die Schleife (hier jetz mal p) steht damit für jeden Datensatz deiner Untertabelle.

    Du kannst die Bedingungen schon vorab prüfen, oder nachträglich während jedes Schleifendurchlaufs...

    Wichtig ist, die Variablen und Werte, welche aus der Haupttabelle stammen, musst du vor der Schleife "rein holen" damit sie im laufenden Code verfügbar sind. 

    Außerdem schreibe ich die for-schleifen gerne mit einem einzigen vorgestellten p. und dann alles was mit diesem Datensatz passieren soll in Klammern 

    Mit Bedingung vorher prüfen sähe das so aus:

    let myDatum := Datum1;

    for p in Untertabelle where Textfeld like "Anlieferung" do

    p.(

    Datum2 := myDatum;

    Auswahlfeld = 1

    )

    end

     

    Das wäre die Version mit der vorher abgefragten Bedingung.

    Du kannst auch einfach alle Datensätze der Untertabelle durchgehen und dabei jedesmal die Bedingung abfragen. Das ist bei vielen Datensätzen irgendwann langsamer... irgendwann...

     

    let myDatum := Datum1;

    for p in Untertabelle do

    p.(

    Datum2 := myDatum;

    if Textfeld like "Anlieferung" then Auswahlfeld = 1 end

    )

    end

    • Daniel.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke!!

    Auf Anhieb hat das leider nicht funktioniert; Habe in der ersten Variante immer die Meldung "unexpected Keyword" bekommen. 

    Habe dann"where" durch die eckigen Klammern ersetzt, und jetzt gehts. 

    Inhaltlich auch noch etwas verändert, dabei wieder was gelernt und das sieht jetzt bei mir so aus; 

    let myDatum := Datum1;
    for p in Untertabelle[Textfeld = "Anlieferung"][Auswahlfeld = 1] do
    p.(Datum2 := myDatum;
    'Ja / Nein' := true)
    end

     

    Also: Vielen Dank für die schnelle und Kompetente Hilfe!!! Ich werde wohl im Laufe des Projekts noch öfter auf dieses Forum angewiesen sein. O:-)