Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: ThomasHB am 18.12.13 - 18:03:57

Titel: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 18.12.13 - 18:03:57
Hallo Zusammen,

ich tu mich gerade etwas schwer damit, eine Art m:n Beziehung in Notes zu realisieren...
Ich weiß ja das Notes nicht relational ist..

Die Idee ist die... Ich habe 2 Dokumente.

In 1 Dokument wähle ich etwas aus. Sagen wir mal einen Fall.
Dieser Fall kommt aber aus einem anderen Dokument.

Per DbColumn kein Problem...

In der dazugehörigen View sollen aber nachher die Infos aus Dokument 1 und Fall angezeigt werden.

Mit Response Dokument kann ich da leider nicht arbeiten um $Ref nutzen zu können...
Kann ja x Fälle geben.

Also war meine Idee... Der Benutzer wählt ja eh Fälle aus.
Also gehe ich nach der Auswahl aus der Dialogliste hin und hol mir einfach die Auswahl...
Wenn ich die Auswahl habe, dann hole ich die mit UniqueIDs der Dokumente..
Und dann kann ich über GetDocField das Feld zur Anzeige ran holen...

Kann man diese Überlegung als richtig ansehen? Ich bin leider kein Guru auf dem Gebiet.  :(

Falls Ja, wie würde ich an die UniqueID im Fall Dokument kommen?

LG,
Thomas
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: AC am 18.12.13 - 18:25:48
Ich verstehe jetzt die Anwendung, Gegebenheiten und Anforderungen  nicht ganz.
Kann sich an den Dokumenten danach auch noch etwas ändern?

Können nicht die Infos aus dem einem Dokument ( oder mehreren?)  in das andere Dokument geschrieben werden?
Dann kannst Du diese Felder einfach im View mit anziehen  

Klar ist, wenn im nachhinein doch noch etwas an einem Dokument geändert wird,  müsste das im anderen Doument auch mit reingeschrieben werden ( Script oder Agent etc) .

Du schreibst zu wenig über die Anwendung um zu entscheiden ob das ein gangbarer Weg ist oder welche Methode sich am besten eignet.

Gruß Alexander
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: umi am 19.12.13 - 09:13:45
Hallo Thomas

Für diese Art von Beziehungen verwende ich immer ein eigenes Schlüsselfeld.
Per Lotusscript ist dies relativ einfach zu bauen.

Benutzer wählt per PicklistCollection das Dokument aus einer Ansicht aus.
Dadurch erhalte ich direkt das Notesdokument und kann alle benötigten Items kopieren und diese in einer Ansicht darstellen.


Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 19.12.13 - 11:25:47
Hallo Urs,

danke für die Antwort... Ich habe das mal versucht.
Allerdings erhalte ich die Meldung... Ganz komisch.
Das die DB nicht existieren würde... Genauer: File does not exist.

Mein Code:

Code
Set col = ws.PickListCollection(3,1,db.Server,s.CurrentDatabase.FileName,"n_GP_List","Bitte wählen...","Bitte wählen...")

Wo liegt denn das Problem?

LG,
Thomas
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: Peter Klett am 19.12.13 - 11:31:38
Verwende mal Filepath anstelle von Filename
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 19.12.13 - 12:18:36
Huhu... Nochmal Ich.

Also ich habe das mal probiert...
Klappt ja auch.

Aber das Problem mit der Picklist ist ja dann, dass ich nicht mehr erkennen kann, was ich bereits einmal ausgewählt habe. Gibt es da auch eine Möglichkeit?

Wie gesagt ich bin da leider kein Experte.  :(
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: Peter Klett am 19.12.13 - 12:27:31
Das ist tatsächlich ein großer Nachteil der Picklist.

Da kannst alternativ auch mit einem Prompt arbeiten (gibt es auch im NotesUIWorkspace), und baust Dir die Auswahlliste so zusammen, dass Du als Alias die UniversalID hast.

Als Ergebnis des Prompt hast Du dann die UniversalID, mit der Du die benötigten Daten holst.
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: Axel am 20.12.13 - 09:05:12
Ich habe früher auch noch mit einer anderen Alternative gearbeitet.

Du baust dir eine Ansicht, die auch versteckt sein kann. In der ersten Spalte zeigst du die Werte an die der User zur Auswahl nutzt. Diese Spalte muss dass auch sortiert sein. In der zweiten Spalte nimmst du alle Felder auf deren Inhalte genutzt werden sollen und verbindest sie mit dem "~" - Zeichen. Also so zum Beispiel: Feld1 + "~" + Feld2 + usw.

Der Anwender wählt nun in einer Dialogliste aus der ersten Spalte den Wert aus. Danach liest du mit "@dblookup" und dem ausgewählten Wert als Schlüsselbegriff die zweite Spalte aus und zerlegst den Rückgabewert mit @word und schreibst die Werte in die entsprechenden Felder.

Allerdings funktioniert das Ganze nicht mit Inhalten von RTF-Feldern und außerdem könnte es Probleme geben wenn du Inhalte aus sehr vielen Feldern benötigst.

Eine andere Alternative wäre auch eine Ansicht wie oben, nur dass allen Feldern in separaten Spalten  enthalten sind. Im Dokument wählt der Anwender dann wieder in einem Dialogfeld den entsprechenden Wert aus. Alle Felder die dann Werte aus dem ausgewählten Dokument enthalten sollen sind dann berechnete Felder und in der Formel liest du mit @dblookup mit dem Wert aus dem Dialogfeld als Schlüssel die entsprechenden Spalten der Ansicht aus.

Es gibt viele Wege nach Rom.

Axel
 
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 17.01.14 - 15:08:11
Hallo Zusammen,

habe dazu noch einmal eine Frage...

Für mich sieht es gerade so aus, dass ich ausßer der Dialog List, also dem Feld mit Typ Dialog List keine Möglichkeit habe zu erkennen, was einmal ausgehwählt wurde...

Picklist kann das nicht und Prompt scheinbar auch nicht...
Ist das tatsächlich so?
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: Peter Klett am 17.01.14 - 17:01:21
Aus dem Beispielscript der Hilfe

response = workspace.Prompt (PROMPT_OKCANCELLIST, _
  "Select a Database", _
  "Select a database to open.", _
  values(0), values)

Warum sollte Prompt das nicht können? Du musst natürlich den Vorgabewert mitgeben ...
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 22.01.14 - 17:08:21
Vielen Dank dafür...

Ich stehe nun aktuell vor einem anderen Problem, dass ich einfach nicht verstehen kann...

Folgender Code:

Code
		viewEntries = v.EntryCount
		
		Redim valArr (viewEntries)
		
		For i = 1 To viewEntries
			k = doc.GetItemValue("GP_Bezeichnung")
			valArr(i) = k(0)
			Set doc = v.GetNextDocument(doc)
		Next
		
		GP_Prompt = ws.Prompt(7,"Bitte wählen...","Bitte wählen Sie aus.",Item2Arr,valArr)


Das Problem ist, ich habe immer eine 1 leeres Element in der ganzen Auswhalliste.
Die Vorselektierung mittels Item2Arr klappt prima.

Aber ein leeres Element, welches ich auch auswählen kann hab ich trotzdem drin.

Selbst dann wenn ich beim EntryCount eines abziehe.

Dann fehlt mir ein Value und der leere Eintrag ist trotzdem da...

Kann mir da jemand helfen?
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: koehlerbv am 22.01.14 - 17:12:35
Du dimensionierst Dein Array ja auch für ein Element zuviel - hast also immer ein leeres Element.
Also entweder viewEntries - 1 oder nach der Schleife ein Fulltrim aufs (mehr oder weniger) gefüllte Array.

HTH,
Bernhard
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 22.01.14 - 17:34:38
Vielen Dank.  :)
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 22.01.14 - 18:02:51
Was mir gerade noch auffällt...

ItemArr2 ist ja ein Array was auch mit 3 Werten gefüllt ist.

Die Vorauswahl wählt aber nur 1 aus.
Obowhl in der Help steht ich kann ein Array dort rein geben im Prompt.

Ist das alles kompliziert.  ???

Vorauswahl Array und Values stimmen aber überein.
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: koehlerbv am 22.01.14 - 19:54:04
Und alle Deine Default-Values sind in dem Auswahl-Array auch vorhanden? Dort nicht vorhandene Werte werden sonst ignoriert.
PROMPT_OKCANCELLISTMULT (oder 7) war auch im Code, als Du das ausprobiert hast?

Bernhard
Titel: Re: Nach Auswahl über Dialogliste andere Werte in versteckte Felder schreiben
Beitrag von: ThomasHB am 23.01.14 - 11:58:55
Ja die sind vorhanden...

Zählt möglicherweise die Reihenfolge wie sie im Array stehen?

Es kann durchaus sein, dass die Werte für Default anders rein geladen werden, als jene die für die Values ran gezogen werden.