0

Trigger nach Änderung funktioniert nicht

Hallo ich habe eine Untertabelle mit Aufgaben und möchte diese automatisch als erledigt kennzeichnen. 

Dafür habe ich wie ein Quiz die Felder zusammengeführt um auf eine Punktzahl zu kommen.
Jede Aufgabe hat eine Nummerierung zum Auswertfeld in der Akte.
Jetzt habe ich ein Trigger nach angelegt:
Sobald die Zahl erreicht wurde soll der Status sich ändern, ebenfalls zurückändern wenn Daten aus dem Feld gelöscht werden, da die Aufgabe dann unvollständig ist.

if 'anschrift auswertung' = 6 then
    first(Aufgaben[AID = 2].(Status := 3))
else
    if 'anschrift auswertung' != 6 then
        first(Aufgaben[AID = 2].(Status := 1))
    else
        if 'Persönliche Daten auswertung' = 9 then
            first(Aufgaben[AID = 1].(Status := 3))
        else
            if 'Persönliche Daten auswertung' != 9 then
                first(Aufgaben[AID = 1].(Status := 1))
            else
                if HDZc = 1 then
                    first(Aufgaben[AID = 3].(Status := 3))
                else
                    if HDZc != 9 then
                        first(Aufgaben[AID = 3].(Status := 1))
                    else
                        if ausweisc = 1 then
                            first(Aufgaben[AID = 4].(Status := 3))
                        else
                            if ausweisc != 9 then
                                first(Aufgaben[AID = 4].(Status := 1))
                            end
                        end
                    end
                end
            end
        end
    end
end

Da passiert aber leider nichts, weiss jemand was ich falsch mache? 
Freue mich auf Rückmeldungen!

6 Antworten

null
    • Gotje_Ing
    • vor 2 Monaten
    • Gemeldet - anzeigen

    Moin,
    deine If-Abfragen sind sehr verkorkst. 
    Du fragst:
    Wenn x = 6, dann tue A, ansonsten tue B. 
    Es gibt nur A oder B. alles nach Zeile 5 kann NIEMALS erreicht werden, da die Bedingung else nicht erreicht werden kann. 
    Entweder es ist 6 oder nicht.

    Ich glaube, du möchtest entweder mehere if einzeln hintereinander schreiben, oder einen switch case nutzen.
     

      • PD M
      • PD_M
      • vor 2 Monaten
      • Gemeldet - anzeigen

       danke für deine schnelle Rückmeldung.
      mit ; hab ich es auch schon probiert, es klappt nicht. 
      Hast du einen Tipp?

      • PD M
      • PD_M
      • vor 2 Monaten
      • Gemeldet - anzeigen

       switch case hab ich leider noch nicht gemacht...

    • Gotje_Ing
    • vor 2 Monaten
    • Gemeldet - anzeigen

    Mir fällt noch was auf:

     first(Aufgaben[AID = 2].(Status := 3))

    sollte lauten

     first(Aufgaben[AID = 2]).Status := 3

    Das könnte schon einiges lösen.

    Kannst du kurz bestätigen, dass mindestens der erste Fall ('anschrift auswertung' = 6) funktioniert? Dann können wir die verschachtelten If-Bedingungen danach angehen.

      • PD M
      • PD_M
      • vor 2 Monaten
      • Gemeldet - anzeigen

        hallo der erste Eintrag lässt sich prüfen und ausgeben, das heisst beim ersten ist alles korrekt.

    • Gotje_Ing
    • vor 2 Monaten
    • Gemeldet - anzeigen

    Aus dem Code leite ich ab, dass es im Feld "AID" 4 Optionen/Stati gibt. Außerdem leite ich ab, dass der das Feld "Status" auf 1 stehen soll und nur bei gewissen Bedingungen auf 3 gesetzt werden soll.
    Somit können wir grundsätzlich nach einer Änderung erstmal alles auf Status = 1 setzen und dann die Bedingungen prüfen, ob etwas auf 3 gesetzt werden soll.

    Aufgaben.Status := 1;
    if 'anschrift auswertung' = 6 then  first(Aufgaben[AID = 2]).Status := 3 end;
    if 'Persönliche Daten auswertung' = 9 then  first(Aufgaben[AID = 1]).Status := 3 end;
    if HDZc = 1 then first(Aufgaben[AID = 3]).Status := 3 end;
    if ausweisc = 1 then first(Aufgaben[AID = 4]).Status := 3 end;