0

zwei DAF auswerten mit if else oder case

hallo zusammen.

ich habe zwei Dynamische Auswahlfelder und möchte diese in einem Formelfeld angezeigt bekommen.

Wenn DAF1 ausgewählt ist soll der Inhalt von  DAF1 angezeigt werden

Wenn DAF2 ausgewählt ist soll der Inhalt von DAF2 angezeigt werden

wenn in beiden etwas ausgewählt ist oder in keinem dann soll ein alternativ Feld herangezogen werden.

Das Problem ist egal was ich an Zweiter Stelle der if oder case Anweisung eintrage es wird der Zahlenwert genommen aber der Eintrag aus der ersten if/case Anweisung gezogen auch wenn diese leer ist und die select Anweisung eindeutig auf eine andere Tabelle verweist.

Hört sich etwas dubios an aber ich bin am Verzweifeln

let myVT := number(Ergebnis2);
switch myVT do
case "1":
    (
        let SchVer := number(Schichtvertretung);
        (select Schichtzeiten where Nr = SchVer).Schicht
    )
case "2":
    (
        let SchFeh := number('Fehlgründe');
        (select Fehlzeiten where Nr = SchFeh).FehlGrund
    )
case "3":
    (
        let SchTag := number(Schichttag);
        (select Schichtmodel where Schichttag = SchTag).SchichttagKlartext
    )
end

3 Antworten

null
    • Maurice
    • vor 2 Wochen
    • Gemeldet - anzeigen

    Hallo verstehe nicht ganz, aber m.E. muss es ein

    first(select Schichtzeiten where Nr = SchVer).Schicht
    

    oder besser

    record(Schichtzeiten,SchVer).Schicht

    was den select-Befehl vermeidet.

    • Andreas_Kappes
    • vor 2 Wochen
    • Gemeldet - anzeigen

    Hallo Maurice,

    leider hat das ebenso kein Erfolg.

    auch mit record wird bei der Auswahl von case 2 die Datenbank von case 1 angesprochen aber mit dem Feldwert von case 2 . Wenn ich die Reihenfolge tausche ist es das selbe verhalten case 2 zieht immer die daten von case 1. Kann das jemand nachvollziehen?

    ich habe jetzt mal die Schichtplandatei im Anhang. Die Felder findet ihr im Jahrskalender in der Untertabelle Mitarbeiter 1 mit unterschiedlichsten Varianten nach dem Platzhalter

    Zur Erläuterung:

    Ergebnis soll Schicht sein wenn Schichtvertretung und Fehlgründe nicht ausgewählt sind oder wenn beide Auswahlfelder ausgewählt sind

    ansonsten soll  Schichtvertretung oder Fehlgründe angezeigt werden in Farbe wenn eines der beiden ausgewählt ist

     

    Gruß

    Andreas 

      • Maurice
      • vor 2 Wochen
      • Gemeldet - anzeigen

       Nur mal auf die Schnelle zum Weiterarbeiten. Wenn du die Datenfelder mit text() normierst, dann klappt die logische Infrastruktur.

      switch true do
      case 'Fehlgründe' != null and Schichtvertretung = null:
          record(Fehlzeiten,SchFeh).text(FehlGrund)
      case Schichtvertretung != null and 'Fehlgründe' = null:
          record(Schichtzeiten,SchVer).text(Schicht)
      default:
          record(Schichtmodel,SchTag).text(SchichttagKlartext)
      end
      

      Ich habe auch mal (siehe unten) mit debugValueInfo mir die Werte, die ausgegeben werde, angeschaut, wenn keine text()-Klammern stehen. Es werden die korrekten choice-Werte der jeweiligen Tabelle angezeigt. Da weiß ich jetzt auch nicht mehr weiter. Vielleicht kann jemand der tiefer drin steckt einen Grund finden.

      Generell würde ich mir über die Struktur nochmal Gedanken machen. Hinzu kommen die sehr vielen select-Befehle, die dir irgendwann die DB sehr langsam machen werden. Aber ich bin wirklich jenseits davon, hier wirklich qualifiziert Auskunft geben zu können, da ich nur wiedergeben kann, was ich vor allem hier, in Tutorials, Gespräche etc. aufgenommen habe (gerade zum Thema Debuggen und Umgang mit Datumsfeldern eine Lehrstunde (im positiven Sinne) von Uwe erhalten).

      Aber so viel kann ich dir sagen: für jeden Mitarbeiter eine Tabelle anlegen, ist nicht zielführend. Vielmehr eine Tabelle mit den Mitarbeitern (jeder Mitarbeiter ein Datensatz) und dann entsprechende Verknüpfungen, ggf. auch n:m Verknüpfungen aufbauen.

      Grüße

      Maurice

Content aside

  • vor 2 WochenZuletzt aktiv
  • 3Antworten
  • 54Ansichten
  • 2 Folge bereits