Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: pwluky am 07.02.05 - 16:38:56

Titel: Dialogbox Werte in NotesScript einlesen
Beitrag von: pwluky am 07.02.05 - 16:38:56
Habe ein Problem beim Anzeigen von Dialogboxwerten in NotesScript, und zwar:

1. habe ich eine Maske mit einem Dialogbox-Feld, welches auch mehrere Werte enthalten kann:
Feld: Mitglieder
Inhalt-Datensatz 1: Lukas, Kurt, Rudolf
Inhalt-Datensatz 2: Peter, Gustav
Wobei die Namen der einzelnen Mitglieder getrennte Werte sind, d.h. auch durch einen Zeilenumbruch dargestellt werden können.

2. Habe ich eine Ansicht in der diese Dokumente angezeigt werden:
Ansichtname: _gruppenmitglieder
Ansicht:
DatensatzNr.   Gruppenmitglieder     Ersatzdienst
#1                   Lukas                         Chef1
                        Kurt
                        Rudolf
#2                   Peter                          Chef2
                        Gustav

3. Nun möchte ich von einem Mitglied z.B. von Kurt den Ersatzdienst ermitteln, was in obigem Beispiel "Chef1" wäre. Und zwar mit folgendem Script:

Dim view As NotesView
Dim docView As NotesDocument
Set db = session.CurrentDatabase
Set view = db.GetView("_gruppenmitglieder")
Set docView = view.GetFirstDocument
While Not(docView Is Nothing)
  Msgbox docView.Gruppenmitglieder(0)
  If Arraygetindex(Split(docView.Gruppenmitglieder(0),","),doc.Mitglieder(0),5) <> Null Then
      Msgbox "gefunden MA: " & Implode(docView.Gruppenmitglieder(0))
  End If
  Set docView = view.GetNextDocument(docView)
Wend

Problem:
Das Problem ist, dass die Variable docView.Gruppenmiglieder(0) nicht "Lukas, Kurt, Rudolf" sonder nur "Lukas" ausgibt und die restlichen Werte "verschluckt"!! :-(

Vielleicht gib's ja eine einfache Erklärung dafür?

Danke & Grüße
Lukas
Titel: Re: Dialogbox Werte in NotesScript einlesen
Beitrag von: Marinero Atlántico am 07.02.05 - 16:46:52

Problem:
Das Problem ist, dass die Variable docView.Gruppenmiglieder(0) nicht "Lukas, Kurt, Rudolf" sonder nur "Lukas" ausgibt und die restlichen Werte "verschluckt"!! :-(

Vielleicht gib's ja eine einfache Erklärung dafür?

Ja.
Kurt ist in docView.Gruppenmitglieder(1)
und Rudolf in  docView.Gruppenmitglieder(2)

dies könnte helfen, syntaktisch nicht unbedingt korret:
Code
Dim iGMem as NotesItem
set iGMem = docView.getFirstItem("Gruppenmitglieder")
forall elemGroup in IGMem 
 msgbox elemGroup 
end forall ' heisst möglicherweise anders.  
Titel: Re: Dialogbox Werte in NotesScript einlesen
Beitrag von: Roalf am 07.02.05 - 17:24:13
ganz verstanden hab ich es nicht, mit den Gruppenmitglieder... Liegt wohl am Karneval  ;D

Aber eine "Problemstelle" hab ich gefunden:
gerade bei solchen Tests wo man viel ausprobiert sollte man sich über den Viewrefresh Gedanken machen.

also hinter dem Statement

view = db.GetView("_gruppenmitglieder")

gleich ein
 
view.refresh 

hinterherschieben.

'ähh...view.refresh mit call? oder Parameter? weis nicht mehr...zeigt aber die Hilfe.

Anmerkung: so ein refresh erspart einem viel ungemacht....aber kostet auch bannig viel Performance, sollte also mit Beacht eingesetzt werden...und die Frage wo ja und wo nein...ist ohne den exakten Kontext nicht zu beantworten....
Titel: Re: Dialogbox Werte in NotesScript einlesen
Beitrag von: Thomas Schulte am 07.02.05 - 17:56:55
Total, komplett falscher Ansatz. Und zwar sowohl von der Frage her, als auch bei beiden Antworten.
Um das Problem ohne irgendwelche Fisimatenen zu lösen und vor allem ohne den Blödsinn jedesmal durch due Liste der Dokumente zu gehen und mit Arraygetindex zu arbeiten brauchst du nur zwei Dinge.
Erstens eine Ansicht, sortiert nach deinen Gruppenmitgliedern (und unter Umständen noch irgendeinem anderen Key ums eindeutig zu machen wenn der Typ in mehreren Gruppen drin ist) und dem guten alten view.getdocumentbyKEy("SoEinSchlawiner")

Also
set me_view =me_db.getview("DeinView")
set me_doc = me_view.getdocumentmentbyKey("Jetztaberraushier")
if not me_doc is nothing then
print "Der Saubeutel hat jetzt den Chef " + me_doc.ISSCHEFFE(0)
else
print "Weis nix von Scheffe, macht nix!"
end if
Titel: Re: Dialogbox Werte in NotesScript einlesen
Beitrag von: billygates am 07.02.05 - 19:08:26
Warum nimmst Du nicht die gute alte Formelsprache hierfür?

1. Ansicht "_gruppenmitglieder" mit
    - Spalte 1 Gruppenmitglieder als Kategorien
    - Spalte 2 Esatzdienst

2. In Maske
    - Dein Feld "Mitglieder"
    - Ausgabefeld (Text - berechnet) mit
       @IfError(
       @DbLookup( Klasse : Cache ; Server : Datenbank ; "_gruppenmitglieder" ; Mitglieder ; 2);
       "")

Der @IfError ist neu in R6, bis R5 mußt Du den @IF(@IsError...) nehmen.

Es geht alternativ auch über den @Picklist