@For bei Feldern

  • hallo,
    habe ein merkwürdiges Problem.
    habe ein ComputedField der mir in einer Schleife etwas "berechnen" soll,
    aber wie es aussieht, gibt es Probleme mit Schleifen in Feldern?
    hatte schon neues Feld gemacht, sogar neue Form->bringt nichts
    mir wird ne 1 angezeigt, obwohl im Feld gar keine 1 als Ergebnis ausgegeben werden soll
    unidList:= @DbLookup( "Notes":"ReCache";""; "HAPP"; key; 7 );
    elem:=@Elements(unidList);
    @If(@IsError(unidList);
    "0";
    (StartTime="")|(elem="0");
    "0";
    @For(i:=1; i<=@ToNumber(elem); i:=i+1;
    unid:=unidList[i];
    start:= @Time(@GetDocField(unid; "StartTime"));
    end:= @Time(@GetDocField(unid; "EndTime"));
    @If( ((StartTime >=start) & (StartTime<end) ) ;
    "yes";
    "0"
    )
    )
    )


    selbst so was gibt mir eine 1 als Wert
    @For(n := 1;
    n <4;
    n := n + 1;
    @Prompt([OK]; @Text(n) )
    )


    woran kann so was liegen ? Fehlen mir möglicherweise irgendwo Einstellungen , wo ich erlauben soll , dass Schleifen in Feldern berechnet werden sollen ?



    PS:
    Schön , dass so ein Forum gibts

  • Das mit dem einfachen Beispiel stimmt, da bekomme ich auch nichts. Noch nicht einmal eine Ausgabe


    Wenn ich allerdings den @Prompt um einen Wert erweitere, kommt einwandfrei die 1, 2 und 3:


    @For(n := 1;
    n <4;
    n := n + 1;
    @Prompt([OK]; ""; @Text(n) )
    )

  • der Wert wird gesetzt in Anhängigkeit von If .
    vordere Abfragen sollen alle eine "0" liefern, die letzte ->


    @If( (StartTime >=start) & (StartTime<=end) ;
    "yes";
    "0")



    also nirgendwo in der Formel ist die Rede von einer "1" als Wert


    aber in der Anzeige wird eine 1 angezeigt



    2.
    das mit einem Parameter mehr, klappt bei mir auch , aber der Wert des Feldes ist trotzdem eine 1.
    (brauche eigentlich keine Promptausgabe, war nur Test )

  • Siehe Hilfe


    Zitat


    Return value
    true
    True (1) unless an error occurs during execution of the condition. An "unexpected data type" error occurs if the conditional expression results in a non-numeric value.


    Du musst innerhalb der Schleife einer Variable dein Ergebnis zuweisen und dieses dann dem Feld geben, siehe zweites Beispiel zu @For

  • DANKE "taurec",
    das hatte ich auch gerade versucht.
    jetzt wird zumindest keine 1 mehr als Wert gesetzt, aber habe noch anscheinend einen logischen Fehler in der Abfrage drin, wegen Zeitinterval


    @If( (StartTime >=start & StartTime<=end) |
    (EndTime>=start & EndTime<=end )|
    (start>=StartTime & end<=EndTime) ;
    conflict:="yes";
    conflict:="no" )


    es wird noch gespeichert, wenn es eine Terminüberschneidung gibt in dem Fall dass neu eingegebene EndTeit innerhalb eines bestehenden Termins drin liegt.
    (EndTime>=start & EndTime<=end )
    denke , aber das sollte diese Abfrage decken -> deckt aber nicht


    NOTES bringt mich heute noch um :)

  • Hast du schon mal versucht deine Prüfformel selbst zu testen, um eventuelle Fehler dort auszuschliessen.


    Anhand deiner recht spartanischen Erklärung habe ich nämlich keine Ahnung was du eigentlich erreichen willst