Autor Thema: Dynamisches Checkbox Feld  (Gelesen 1693 mal)

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Dynamisches Checkbox Feld
« am: 18.09.04 - 06:31:34 »
Ich suche nach einer Möglichkeit einem Feld (Checkbox) in abhängigkeit eines weiteren ebenfalls Checkbox die Werte dyn. zu übergeben.

Feld1 Werte:
A
Z
T

Feld2 Werte:
Al08      ZF19    TF08
Al48      ZF35    TF35
Al35                  TF70
AM75                TF69

Im Moment kann Feld 1, 1 Wert oder 2 Werte haben.
Ich weiß allerdings nicht ob in Zukunft 3 oder mehr Werte sein können. Deshalb suche ich nach einer dyn. Lösung.
Im moment habe ich eine Formel die 3 Werte bewältigen kann.
Diese erscheint mir aber zu "überzwerg".

Und das ganze mit@Formel.

Gruss
Boris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Dynamisches Checkbox Feld
« Antwort #1 am: 18.09.04 - 12:48:04 »
Die Frage habe ich schlicht nicht verstanden, Boris (aber vielleicht habe ich auch gerade ein Brett vor dem Kopf).

Bernhard

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Dynamisches Checkbox Feld
« Antwort #2 am: 18.09.04 - 13:08:11 »
ich weiß nicht, ob das so bei Checkboxen (oder überhaupt) funktioniert:

meine erste Idee war, für jeden Wert, den Feld 1 annehmen kann ein Dokument zu machen. In diesem Dokument gibts 2 Felder: in einem steht der Wert für Feld 1, im anderen die möglichen Werte für Feld 2.

die Checkbox (Feld 2) ermittelt dann die zur Auswahl angebotenen Werte per DBLookup aus einer Ansicht, die deine Konfigurationsdokumente enthält.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Dynamisches Checkbox Feld
« Antwort #3 am: 18.09.04 - 13:27:05 »
Bernhard so klar war es wahrscheinlich auch nicht erklärt, also.

Feld 1 kann (nach Stand heutiger Dinge) 2 Möglichkeiten haben.
A
T

Je nachdem was der user nun anklickt sollen im zweiten Feld
die Auswahlmöglichkeiten angezeigt werden.

Für A ==> AL08,AL48,AL35,AL75
Für T ==> TF08, usw. s. oben

Für diese zwei Möglichkeiten habe ich eine Lösung:
Wenn A + T dann alle sonst jeweils eins.

Dieses hätte ich aber gerne dyn. da ich nicht weiß ob Feld 1 irgendwann doch mehr als 2 Möglichkeiten hat.

Ich hoffe nun ist es eindeutiger, muss jetzt ins Stadion, bis später.

Boris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Dynamisches Checkbox Feld
« Antwort #4 am: 18.09.04 - 15:11:26 »
Boris, so unklar kannst Du Dich nicht ausgedrückt haben - Thomas hat es ja verstanden  ;) Es lag also an meinem oben erwähnten Brett ...

Thomas hat da schon einen Ansatz aufgezeichnet:
- Für jedes Schlüsselwort ein Setup-Dokument, wie von Thomas beschrieben
- Hierzu eine Ansicht, die sortiert nac den Feld1-Schlüsselworten ist.
- Feld1 liest mit @Unique (@dbColumn ( ... )) die Ansicht aus, um die für Feld1 zur Verfügung stehenden Schlüsselworte zu berechnen.
- Feld1 hat die Eigenschaft "Felder bei Schlüsselwortänderung aktualisieren"
- Unter Feld1 ein berechnetes Feld (bei Thomas' Methode reicht "Berechnet zur Anzeige"), welches via @dbLookup ( ...; Feld1; ...) die für Feld2 zur Verfügung stehenden Schlüsselworte zu ermitteln
- Feld2 bezieht sich auf das berechnete Feld

A-Bär: Sowas funktioniert nur, wenn man in Feld1 nur EIN Schlüsselwort auswählen kann.
In R6 könnte man für mehrere Feld1-Schlüsselworte eine Schleife verwenden, was natürlich in R5 nicht funktioniert ...

Workaround:
Nutze das PostRecalc-Event (was ja beim Ändern von Feld1 getriggert wird) und bastele Dir dort auf Grund der Einträge in Feld1 via NotesView.GetAllDocumentsByKey ein Optionenfeld zusammen für, dass Du dann als "Formel" für Feld2 nutzt.

Irgendwie ist mir so, als wenn es da auch eine Möglichkeit (okay - ein ziemlicher Trick) mit @functions gibt - in einem anderen Zusammenhang wurde das sogar schon mal hier im Forum diskutiert - aber ich komme partout nicht mehr darauf. Wohl wieder das Brett - siehe oben  ;D

HTH,
Bernhard

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Dynamisches Checkbox Feld
« Antwort #5 am: 18.09.04 - 19:10:00 »
A-Bär: Sowas funktioniert nur, wenn man in Feld1 nur EIN Schlüsselwort auswählen kann.

sicher?
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Dynamisches Checkbox Feld
« Antwort #6 am: 18.09.04 - 20:12:07 »
Nein, nicht sicher, Thomas:
http://www.atnotes.de/index.php?board=7;action=display;threadid=17953;start=0

Aber ein flaues Gefühl werde ich dabei trotzdem nicht los ...

Bernhard

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Dynamisches Checkbox Feld
« Antwort #7 am: 19.09.04 - 11:48:08 »
Thomas hat da schon einen Ansatz aufgezeichnet:
- Für jedes Schlüsselwort ein Setup-Dokument, wie von Thomas beschrieben
Das wäre eine Möglichkeit ich möchte allerdings die Werte in einem Setup-Dokument haben. Ich werde die Sache dann erstmal als erledigt betrachten, wie schon erwähnt klappts ja mit drei Werten. Wenn es evt. irgendwann mal mehr werden naja dann haben wir evt. auch schon R6 und ich kann die Schleifenfunktion nehmen.
Nachfolgend mein Code (vielleicht wird ja jemand inspiriert und hat ne einfacherer Lösung:

REM "Setzen und Auslesen verschiedener Variablen.";
FIELD Model_T := Model_T;
TempLUView := "LUKeyword_V";
TempLUKeyTyp := "Typ";
TempLUKeyMod := "Modelle";
TempSelectTyp := @Explode(Typ_T;":");

TempLUAllTyp := @DbLookup("Notes":"NoCache";"";TempLUView; TempLUKeyTyp;2);
TempAllTyp := @If(@IsError(TempLUAllTyp);"Kein Schlüssel gefunden";TempLUAllTyp);

TempLUModell := @DbLookup("Notes":"NoCache";"";TempLUView; TempLUKeyMod;2);
TempModell := @If(@IsError(TempLUModell);"Kein Schlüssel gefunden";TempLUModell);

REM "Mit der folgenden Zeile werden die entsprechenden Modelle für einen Typ ermittelt.";
TempOneValList := @Left(TempSelectTyp;1) +@Trim(@Right(TempModell;TempSelectTyp ));

REM "Mit den folgenden Zeilen werden die entsprechenden Modelle für einen nicht angewählten Typ ermittelt.";
REM "Diese Zeile wird benötigt wenn drei Type vorhanden sind.";
REM "Zuerst ermitteln welcher Typ nicht angewählt ist.";
TempTypNotSelect := @Explode(@ReplaceSubstring(TempAllTyp;TempSelectTyp;"");"");

REM "Die Modelle des nicht angewählten Typs ermitteln.";
TempNotSelList := TempTypNotSelect +@Trim(@Right(TempModell;TempTypNotSelect));

REM "Nun alle Modelle ermitteln die den angewählten Typen entsprechen.";
REM "Dies wird dadurch erreicht das TempNotSelList von TempModell Replaced wird.";
TempTwoValList := @Explode(@ReplaceSubstring(TempModell;TempNotSelList;"");"");

REM "Die nächsten Zeilen werden zur ermittlung der Anzeige Werte gebraucht.";
Temp1SelectTyp := @If(@Elements(TempSelectTyp) = 1);
Temp2SelectTyp := @If(@Elements(TempSelectTyp) = 2);
Temp3SelectTyp := @If(@Elements(TempSelectTyp) = 3);

Temp1Typ := @If(@Elements(TempAllTyp) = 1);
Temp2Typ := @If(@Elements(TempAllTyp) = 2);
Temp3Typ := @If(@Elements(TempAllTyp) = 3);

REM "Je nachdem wieviele Typen als Vorgabe und als Auswahl vorhanden sind gibt es verschiedene Anzeigefälle.";
TempShowOne := @If(Temp2Typ & Temp1SelectTyp) | @If(Temp3Typ & Temp1SelectTyp);
TempShowTwo := @If(Temp3Typ & Temp2SelectTyp);
TempShowAll := @If(Temp1Typ & Temp1SelectTyp) | @If(Temp2Typ & Temp2SelectTyp) | @If(Temp3Typ & Temp3SelectTyp);

REM "Am Schluss die Auswahl was angezeigt werden soll.";
@If(TempSelectTyp = "";"Werte erscheinen nach Auswahl Typ";TempShowOne;TempOneValList;TempShowTwo;TempTwoValList;TempShowAll;TempModell;"FEHLER")

Gruss und schönen Sonntag

Boris

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz