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
-
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
-
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)
endAlso: Vielen Dank für die schnelle und Kompetente Hilfe!!! Ich werde wohl im Laufe des Projekts noch öfter auf dieses Forum angewiesen sein. O:-)
Content aside
- vor 3 JahrenZuletzt aktiv
- 2Antworten
- 415Ansichten