Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: haarig am 17.06.07 - 14:59:19

Titel: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: haarig am 17.06.07 - 14:59:19
Hallo Leute,

ich habe schon ein bißchen gesucht, habe aber nichts zu meinem Problem gefunden (auf jeden Fall nichts, was mir geholfen hat).

Ich habe in einer Form ein Field als ComboBox mit dem Namen DeviceType. Die Werte werden automatisch aus einer View übernommen.

Wenn der User dort nun eine Auswahl trifft sollen automatisch in der ComboBox DeviceTypeSpecial die Werte zur Auswahl bereit stehen.

Das ist mein bisheriger Ansatz. Problem dabei ist, dass nur ein Wert in der ComboBox zur Auswahl steht, auch wenn eigentlich mehrere zu erwarten sind.
Code
REM
{ Wenn ein Gerätetyp gewählt ist, wird auch die Auswahl für Geräteuntertypen
dynamisch erstellt };
@If(DeviceType="";"";
   @Sort(
      @Unique(
         @DbLookup("":"NoCache";"":"";"VDEVEBYCAT";DeviceType;2)
      )
   )
)
VDEVEBYCAT ist der Alias für eine View, die doppelt kategorisiert ist. Erste Kategorie ist nach DeviceType und zweite nach DeviceTypeSpecial.
Problem ist, wie oben schon gesagt, dass immer nur ein Wert zur Auswahl steht.

Beispiel:
Wählt der Benutzer als DeviceType "Festplatten" ist bei DeviceTypeSpecial die Auswahl nur IDE, obwohl es auch schon Dokumente mit SCSI gibt.  :-:

Ich hoffe ihr könnt einem Notes-Anfänger helfen.

Vielen Dank schon mal.
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: Axel am 18.06.07 - 08:00:58
Hast du in den Eigenschaften der Komboboxen jeweils die Aktualisierungsoptionen richtig gesetzt?

Beim Feld DeviceType muss "Felder bei Schlüsselwortänderung aktualisieren" und beim Feld DeviceTypeSpecial "Auswahl bei Dokumentaktualisierung aktualisieren" gesetzt sein.


Axel
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: haarig am 18.06.07 - 08:29:03
Ja, beide Optionen sind so gesetzt.
Trotzdem bleibt das Problem.

Ich bin weiter ratlos und würde mich über Hilfe freuen  :-:
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: Axel am 19.06.07 - 19:40:42
Sorry, dass ich mich heute abend erst deinem Problem annehmen konnte.

Die zweite Spalte darf nicht kategorisiert sein.


Axel
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: haarig am 19.06.07 - 20:30:17
...
Die zweite Spalte darf nicht kategorisiert sein.
..
Dank dir schon mal.

Hmm, die zweite Spalte ist natürlich kategorisiert. Gibt es eine irgendeine Möglichkeit trotz kategorisierter zweiter Spalte alle Werte der zweiten Spalte zu erhalten? Oder ist das dann prinzipiell nicht möglich ohne eine extra View dafür zu erstellen?
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: Axel am 20.06.07 - 07:42:08
Gibt es eine irgendeine Möglichkeit trotz kategorisierter zweiter Spalte alle Werte der zweiten Spalte zu erhalten?

Nein.


Oder ist das dann prinzipiell nicht möglich ohne eine extra View dafür zu erstellen?

Ja. Du brauchst in deinem Fall eine extra ansicht dafür. Die kann auch versteckt sein.

Aber was spricht denn dagegen? Das hat sogar einen nicht zu unterschätzenden Vorteil. Stell dir mal folgende Situation vor: Du hast eine fertige Datenbank mit solch einer Auswahlfunktion wie du sie jetzt machen willst. Diese basiert auf einer sichtbaren Ansicht. Nun kommt die Anforderung, das eben diese Ansicht grundlegend verändert werden soll. Die Probleme mit der Auswahl sind vorprogrammiert. Benutzt du eine versteckte Ansivht, kannst du die, für die User sichtbare ändern wie du lustig bist, ohne das die Auswahl davon betroffen ist.


Axel
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: haarig am 22.06.07 - 18:13:24
Ich hab das jetzt soweit mit einer neuen View hinbekommen. Jetzt habe ich aber noch ein anderes Problem bemerkt. Und zwar wenn ich eine Auswahl für Typ und Untertyp getroffen habe und dann noch mal den Typ änder, steht der Untertyp noch drin, obwohl der dann nicht zum ausgewählten Typ passt. Das Untertyp Feld müsste also zurückgesetzt werden, wenn das Typ Feld geändert wird.

Wie kann man das denn am besten erreichen?
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: Axel am 22.06.07 - 19:10:08
Das ist nicht ganz trivial.

Mal so ins Blaue gedacht. Das zweite Kombinationsfeld müsste in der Auswahlformel auf ein verstecktes berechnetes Feld mit einer @DbLookup-Formel verweisen. Dieses DbLookup hat als Key-Parameter das erste Kombinations-Feld eingetragen. Ob das dann aber sauber funktioniert, da bin ich mir nicht ganz sicher.

Andere Alternative wäre die gesamte Auswahl über einen Hotspot zu machen. Im Code kannst du dann die Felder entsprechend bearbeiten.

Axel
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: Axel am 23.06.07 - 10:24:41
Scheint auf den ersten Blick eigentlich doch ganz einfach zu sein. Ich habe mal eine Test-DB aufgesetzt und funktioniert das ganz ohne Klimmzüge.

Ich hänge die DB mal dran. Dann kannst du dir das mal anschauen.


Axel
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: haarig am 23.06.07 - 12:01:32
Danke für deine großen Bemühungen.

Zuerst hab ich gedacht, ok, problem gelöst. Dann hab ich aber nicht gefunden, was bei dir anders war. Dann hab ich aber gesehen, dass ich auch Werte erlaube, die nicht in der Liste vorkommen, weil der Benutzer auch eigene Werte eintragen darf. Und wenn man das erlaubt, hat man halt die von mir beschriebenen Probleme. Trotzdem danke, weil ich das jetzt dadurch erkannt habe, woran das überhaupt liegt.

Ich werde wohl noch weitersuchen müssen. Gäbe es nicht eine Möglichkeit über Events das Verhalten zu erzeugen. Gibt es ein Event, das bei einer Änderung der ComboBox abgefangen werden kann? Dann müsste man ja auch LotusScript benutzen? Man müsste dann auch irgendwie über das Script auf das Feld zugreifen und den Wert auf "" setzen, jedesmal, wenn die eine ComboBox geändert wird.
Wäre das noch ein möglicher Ansatz? Wenn ja, wie geht man da ran?
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: Axel am 23.06.07 - 13:53:05
Auch dafür gibt es eine Lösung.

Markiere in den Feld - Eigenschaften des Feldes DeviceType die Option "Exiting/OnChange-Ereignisse nach jeder Wertänderung ausführen".

In den OnChange-Event des Feldes trägst du folgenden Code ein (Starten "Client" - LotusScript):

Code
	
	Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim doc As NotesDocument
	
	Set uidoc = workspace.CurrentDocument
	Set doc = uidoc.Document
	
	doc.TypeOfDevice = ""

Axel
Titel: Re: Dynamisch die Werte einer ComboBox erstellen
Beitrag von: haarig am 23.06.07 - 18:11:04
Vielen Dank, Axel.

Hat alles super geklappt.

 :)