0

Die Farbe eines Formelfeldes abfragen/ausgeben

Schönen Guten Tag,

ich habe ein Formelfeld "P1" das bei bestimmten Bedingungen "Grün" oder "Rot" wird.

So, jetzt würde ich gerne auf dieser Grundlage das Formelfeld Abfragen ob es Rot oder Grün ist.

 Wie funktioniert das wenn ich raw(P1) in einem anderen Formelfeld eingebe dann bekomme ich als Rückmeldung [object Object].

Falls mir jemand helfen kann wäre ich echt Dankbar, ich habe nämlich nicht nur P1 sondern es geht bis P70.

 

Danke euch,

 

viele Grüße Jonas

6 Antworten

null
    • mirko3
    • vor 3 Wochen
    • Gemeldet - anzeigen

    Hallo Jonas. Ich nehme an, dass in dem Funktionsfeld die styled()-Funktion verwendung findet und du die Hintergrundfarbe abrufen willst. Versuche es mal mit

    parseJSON(formatJSON(FELD)).background
    

    Mirko

      • jonas1
      • vor 3 Wochen
      • Gemeldet - anzeigen

       Hallo Mirko! Toll wenn man sich auskennt. Das ist echt Klasse! DANKE! Funktioniert! :) 

      Wenn ich schon mit einem Profi schreibe, erlaube ich mir noch eine Rückfrage:

      Und zwar, können es von P1 - P70 Formelfelder sein.

      Diese sind variabel und man kann Sie abfrage mit Profilanzahl, wie könnte denn eine Formel ausschauen die Abfragt : Wie viele Profile und dann z.B. alle von P1-P20 abfragt ob alle grün sind und dann eine Text "alles ok" oder eben "nicht ok" kommt.

      Vielen Dank nochmal für den erste Punkt, das hat mir super gut weitergeholfen!!

      Beste Grüße Jonas 

    • mirko3
    • vor 3 Wochen
    • Gemeldet - anzeigen

    Hallo Jonas. Hast Du wirklich 70 Formelfelder angelegt in einer Tabelle? Ich kenne ja Dein Datenmodell nicht und auch nicht die Bedingungen zwischen den Feldern, aber hier mal eine Anregung, wie Du sie abfragen könntest. Die Namen der Formelfelder mußt Du selbst in dem Array in der ersten Zeile nachtragen. Geprüft wird, die Farbe in den Formelfeldern und wenn ALLE "grün" sind, dann wird "ok" ausgegeben, sonst "nicht ok". Mirko

    let allFields := [P1, P2, P3, P4, ...];
    let result := unique(for i in allFields do
                parseJSON(formatJSON(i)).background
            end);
    if cnt(result) < 2 and first(result) = "green" then
        "okay"
    else
        "nicht okay"
    end
    
      • jonas1
      • vor 3 Wochen
      • Gemeldet - anzeigen

       Ja das stellt meinen Lieferschein da, es klingt verwirrend. 

      Unten sieht man es vielleicht, es wird bestellt und dann kann ich mehrere Lieferschein erstellen (Gelb markiert ist nur temporär).

      Falls Teillieferungen erfolgen, gibt es einen zweiten LS.

      Es kann geliefert werden +/-10% und auch manuell links bestätigt.

      Wenn man dann einen neuen Lieferschein erstellt ist diese Position schon grün oder man sieht die Restmenge. 

      Praktisch umgesetzt, mit meinem durch die Anwendung erlangtem Wissen (für einen Profi wahrscheinlich ein Horror! ;-). 

       

      Also deine letzte Formel funktioniert auch, kann man denn auch von P1 - Px (Px = Profilanzahl wie hier 20 Pos)

      Also von bis Abfragen. 

      Dann könnte man immer P1 - my1

      let my1 := "P" + Profilanzahl;
      let allFields := [P1 - my1];
      let result := unique(for i in allFields do
                  parseJSON(formatJSON(i)).background
              end);
      if cnt(result) < 2 and first(result) = "green" then
          "okay"
      else
          "nicht okay"
      end

       

      • jonas1
      • vor 3 Wochen
      • Gemeldet - anzeigen

       

      let my1 := "P" + Profilanzahl;
      let allFields := [P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70];
      let result := unique(for i in allFields do
                  parseJSON(formatJSON(i)).background
              end);
      if cnt(result) < 2 and first(result) = "green" then
          "okay"
      else
          "nicht okay"
      end
      

      so hat es nun doch funktioniert, gefällt mir aber nicht wirklich. 

      Da ich nur die Profilanzahl abfragen will, die auf dem Auftrag gebucht wurde.

      Vielleicht gibt es ja noch eine Lösung mit dem oben genannten.

       

      Beste Grüße, schönen Freitag

      Jonas  

    • mirko3
    • vor 3 Wochen
    • Gemeldet - anzeigen

    Hallo Jonas, in dem nächsten Script mußt Du die Profilzahlen noch eingeben, dann erhältst Du das gewünschte Ergebnis. Du kannst so jede beliebige, fortlaufende Range eingeben. Mirko

    let allFields := [P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70];
    let von := 1;
    let bis := 20;
    let result := unique(for i in slice(allFields, von - 1, bis) do
                parseJSON(formatJSON(i)).background
            end);
    if cnt(result) < 2 and first(result) = "green" then
        "okay"
    else
        "nicht okay"
    end
    

Content aside

  • Status Answered
  • vor 3 WochenZuletzt aktiv
  • 6Antworten
  • 49Ansichten
  • 2 Folge bereits