Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: p206rc am 18.05.06 - 16:15:51
-
Hallo,
ich möchte gerne eine Ansicht basteln, in der nur Dokumente angezeigt werden auf die es bereits Antworten gibt. Das funktioniert aber einfach nicht, entweder ich bekomme alle Dokumente angezeigt oder gar keine.
Hat jemand eine Idee?
Danke!
Claus
-
Das geht auch nicht. Die Antwortdokumente haben zwar eine Referenz auf ihr Hauptdokument, umgekehrt allerdings nicht.
Du müßtest dann schon dafür sorgen, daß so eine Referenz künstlich erzeugt und ggf. auch wieder entfernt wird. Da reicht ja auch ein simpler Flag im Hauptdokument.
-
OK ich verstehe, diese Ansicht ist aber eingebettet und über die Formelsprache kann ich da keinen Flag setzen es sei den ich hätte die DocUniqID? Oder?
-
Das hat eigentlich nichts mit der Ansicht zu tun. Du müßtest beim Speichern eines Antwortdokumentes den Flag im zugehörigen Hauptdokument setzen bzw. beim Löschen eines Antwortdokumentes diesen Flag wieder entfernen, wenn keine weiteren Antworten existieren.
Ich denke auch mal, daß Du da um Script nicht herum kommst. Zumindest wüßte ich ad hoc nicht, wie man so etwas mit Formelsprache umsetzen könnte.
-
Danke!
Ich bin noch eher unerfahren in Lotus-Script und habe deshalb das meiste in der Formelsprache gelöst. Das heißt also beim Speichern des Antwort-Dokuments müsste ich über $REF an das Hauptdokument kommen und den Flag setzen?!
-
Ohne Script-Kenntnisse wird das IMO ein wenig haarig. Du mußt ja nicht nur beim Erstellen einer Antwort etwas tun, sondern auch beim Löschen und beim Löschen zusätzlich noch berücksichtigen, ob es nicht noch andere Antworten gibt.
Ein paar Tipps, falls Du dich daran versuchen möchtest :
- mit NoesDocument.IsResponse kannst Du prüfen, ob das Dokument eine Antwort ist (kann man sich ggf. auch sparen, ich kenn die Anwendung nicht).
- mit NotesDocument.ParentDocumentUNID bekommst Du die UNID des zugehörigen Hauptdokumentes.
- mit NotesDocument.Responses erhälst Du eine DocumentCollection aller Antwortdokumente zu dem Hauptdokument. Wenn die Collection kein Dokument enthält, gibt es keine Antwortdokumente.
Aber wie gesagt, ohne Script-Kenntnisse wird das nicht einfach werden.
-
OK, dann sag ich herzlichen Dank!! Ich hab früher schon ein bisschen Visual Basic programmiert und Lotus Script soll ja sehr ähnlich sein.
DANKE!!! ;D
-
Gerne, bei konkreten Problemen bekommst Du hier auch sicher Unterstützung.
-
Sorry, wenn ich mich einklinke. Die Collection aus NotesDocument.Responses wird doch an der Stelle noch auf jeden Fall 1 sein, da ja das aktuelle Antwortdokument noch vorhanden ist. Oder bin ich falsch?
-
Sorry, wenn ich mich einklinke. Die Collection aus NotesDocument.Responses wird doch an der Stelle noch auf jeden Fall 1 sein, da ja das aktuelle Antwortdokument noch vorhanden ist. Oder bin ich falsch?
Warum "sorry"? Herzlich willkommen im Forum!
Mir ist allerdings nicht ganz klar, warum Du hier auf eine bestimmte Anzahl von Antwortdokumenten tippst. Das mag aber auch daran liegen, dass ich hier nicht ganz durchsehe.
Auf Unterstützung durch Dich (und einen "ansprechbaren Vornamen") hofft
Bernhard
-
Sorry, wenn ich mich einklinke. Die Collection aus NotesDocument.Responses wird doch an der Stelle noch auf jeden Fall 1 sein, da ja das aktuelle Antwortdokument noch vorhanden ist. Oder bin ich falsch?
Klar. Es ging mir darum, darüber zu prüfen, ob noch weitere Antworten vorhanden sind. Also count > 1. Die Formulierung in meinem Post ist da wohl etwas mißverständlich.
-
Kann es sein, daß du die eingebettete Ansicht nur anzeigen willst, wenn es auch etwas zu sehen gibt (sprich: es existiert mehr als nur das Hauptdokument). Dann kann so etwas weiterhelfen:
Setz in die Maske ÜBER die eingebettete Ansicht ein Feld (ich habe es d_embeddedanzeigen genannt), das BERECHNET ZUM ANZEIGEN ist und seinen eigenen Wert als Berechnungsformel hat.
Im QUERYOPEN der Maske setzst du dieses Feld mit
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
If IsNewdoc Then Exit Sub
If source.document.HasItem("$Ref") Then
source.document.d_embeddedAnzeigen="1"
Else
Set xdc=Source.document.Responses
If xdc.count=0 Then
source.document.d_embeddedAnzeigen="0"
Else
source.document.d_embeddedAnzeigen="1"
End If
End If
End Sub
Und dann setzst du auf die eingebettete Ansicht eine HIDE-WHEN-Formel.
Du kannst die eingebettete Ansicht auch in eine Teilmaske setzen und diese Teilmaske nur dann per Formel einbinden, wenn Bedingungen gelten, z.B.
@If(d_embbeddedview="0" | @IsNewDoc | d_PrevPane="1" | (@Subset(@DbName;1)="" & @GetProfileField("98SU";"SetupU_EmbViewLocalCTRL";@UserName)!="1");"";"KundenviewEingebettet")
Der Vorteil dieser Methode ist, daß du die eingebettete Ansicht gar nicht erst aufrufst, wenn die Bedingungen gelten, während du sie im ersten Fall sehr wohl aufrufst, aber nicht anzeigst.
Da kann es schon einmal passieren, daß der Notebookler ein paar Minuten dasitzt und wartet, bis die Ansicht aufgebaut und geöffnet ist, um sie dann ggf. gar nicht zu sehen zu bekommen. Das passiert dir mit der Teilmaske nicht.
-
Hallo
Dieses Problem hätte ich auch bald gehabt. Vielen Dank.
Nur ein bescheidener Vorschlag: Wäre es möglich aus solch guten Antworten auf eine Frage, eine FAQ oder Knowledgebase zu machen? Würde sicher vielen helfen und den geduldigen Anwortern wertvolle Zeit ersparen.
Roladn