Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Wanderwiesel am 18.07.05 - 10:43:50
-
Hallo,
habe ein kleines Problem.
Ich habe zwei Dialoglisten (Name und Jahr). Jetzt möchte ich Felder anhand beider Listen automatisch füllen. So weit ich weiß geht das per Formelsprache gar net.
Höchstens mit Script. Oder gibt es doch ne alternative Lösung?
-
Kannst du ein wenig genauer schilder was du machen möchtest!
-
Also...
ich habe zwei Felder (Name, Jahr).
Zuerst wähle ich den Namen. Dann wird das in dem zweiten Feld entsprechend eine Auswahl anhand des Schlüssels Name dargestellt.
Beispiel:
Feld Name Auswahl = Hans
Feld Jahr bekommt die Auswahlmöglichkeit 2003/2004 und 2004/2005
Nachdem meine Auswahl vollständig mit Name und Lehrjahr gemacht wurde, sollen entsprechend Felder gefüllt werden.
Hoffe das ist einigermaßen verständlicher. ;)
-
Warum sollte das denn bitteschön nicht mit @Formeln funktionieren?
Das ist doch ein geradezu klassischer Fall für diese Sprache. Genauso wie du dein zweites Feld abhängig vom ersten Feld füllst kannst du auch weitere Felder abhängig von der Kombination beider Felder füllen. Du brauchst nur ein wenig @dblookup und vielleicht wenn du es richtig machen willst @word, vorausgesetzt deine Daten sind irgendwo in der Datenbank bereits vorhanden.
-
Hi,
du hast recht, Formelbefehle wie @DbLookup usw. lassen nur einen Schlüssel zu. Du kannst dir aber eine versteckte Ansicht bauen, die beide Schlüssel zusammenfasst. Also in der ersten Spalte so was wie Name + Jahr
Die einfachste Variante wäre aber sicherlich Script zu verwenden. In der Designerhilfe gibt es genügend Beispiele. Schau mal in der NotesView-Klasse bei GetDocumentByKey.
Axel
-
Habe eben ne Lösung gefunden. Mit Formelsprache. Aber: Das zweite Feld zeigt nicht meine vollständige Auswahl von allen Jahren an. Nur das derzeitige Jahr wird angezeit.
-
Hi,
wie sieht denn deine Formel aus? Eventuell ist es ein Aktualisierungsproblem.
Axel
-
Das erste Feld:
@Unique(@DbColumn( "" :"NoCache" ;"" : "" ; "LookupDruckEinsatz" ; 1 ))
Ist ein Dialogfeld.
Das zweite Feld:
@Unique(@If(Druckname="";"";
@DbLookup("":"NoCache";"":"";"LookupDruckEinsatz";Druckname;2)))
Ebenfalls ein Dialogfeld. Jedoch mit dem Unterschied, dass Felder per Schlüsselwort aktualisiert werden.
Die View hat zwei Kategorien: Name und Lehrjahr. Wird wahrscheinlich daran liegen. Blöd, das Notesdatenbanken nicht relational sind...
-
Da mag er die Ansicht nicht. Da das zweite Feld eine Kategorie ist gibt er nicht alles zurück.. In solchen Fällen ist es sowieso sinnvoller mit eigenständigen Ansichten zu arbeiten und die auch mit z.B. ($Ansicht) zu kennzeichnen so das jeder weis. OK Junge wenn du hier änderst dann musst du vorsichtig sein. Das Teil wird irgendwo noch gebraucht.
-
Genau das hab ich auch gemacht. Klappt trotzdem nicht.
Und mit @word das ganze zu lösen klappt auch nicht. Dann muss wohl oder übel ne Script Lösung her...
-
Hi,
hast du beim ersten Dialogfeld die Option "Felder bei Schlüsselwortänderung aktualisieren" und beim zweiten die Option "Auswahl bei Dokumentenaktualisierung aktualisieren" gesetzt?
Axel
-
Japp. Daran hab ich als erstes gedacht.
-
Woher bezieht eigentlich die zweite Spalte ihre Werte ? Was mich wundert, ist, dass zumindest ein Wert ausgelesen wird, aber nicht alle. Kannst Du statt auf die Spalte nicht auf ein Feld der Dokumente zurückkgreifen ?
Bernhard
-
Die Werte sollen anhand beider Spalten ermittelt werden. Wie gesagt, klappt im Prinzip, nur leider wird nicht alles, was in der zweiten Spalte steht angezeigt...
-
Noch mal nur so fürs Grobe. Ich hab nämlich den Eindruck bekommen das es da hängt.
Wenn man mit mehreren Schlüsseln nacheinander arbeitet, und dann zum Schluss Werte für den Kombinierten Schlüssel bekommen will, dann ist es immer sinnvoll beide Schlüssel zu kombinieren um auf den richtigen Wert zugreifen zu können, denn der DBLOOKUP geht immer nur auf das erste Sortierte Feld der Ansicht los.
Also musst du eine Ansicht bauen die die Kombination aus Feld1 und Feld 2 enthält und dann im DBLookup nach dieser Kombination suchen.
Du brauchst also eine Ansicht mit einem Schlüssel Feld1~~Feld2 und dein Lookup für die Felder muss mit genau diesem Wert laufen.
Falls das Problem da liegt, das deine Auswahl im zweiten Feld nicht passt, kannst du dir auch !!Help!! runterladen, da ist das in mit den Feldern Application, Failuretype und FailureSubtype im BugReport genau so gemacht worden.
-
Hab ne Lösung gefunden. Ist zwar net ganz sauber. Aber es klappt. Hab ein seperates Feld als "Key" genommen und beide Spalten zusammengefaßt. Nun klappts. Danke für Eure Hinweise.