Domino 9 und frühere Versionen > ND8: Entwicklung
Ansicht mit Formel schliessen
Karlo F.:
Hallo,
ich komme an einer Stelle nicht weiter.
Ich poste erstmal den entsprechenden Source:
Der folgende Source wird in einem Aktionsbutton in einer Maske aufgerufen.
--- Code: ---Ansicht := "A_HilfsAnsicht";
Titel := "Vorhandene Dokumente für die Kundennummer " + @Text(S_KDNR);
Text := "Wählen sie das gewünschte Dokument";
Spalte := 2;
Kategorie := @Trim(@Text(S_KDNR));
MyUNID := @Text(@PickList([Custom]:[Single]; ""; Ansicht; Titel; Text; Spalte; Kategorie));
@Command([OpenView]; "A_Ansicht");
@Command([OpenDocument]; ""; MyUNID);
--- Ende Code ---
Der Befehl @PickList liefert mir eine UniversalID (die steht in der Spalte 2 der Ansicht A_Hilfsansicht) in die Variable MyUNID.
Mit dieser Variablen möchte ich nun das zugehörige Dokument öffnen.
Nach langen lesen (auch hier im Forum) habe ich erkannt, dass dafür eine entsprechende Ansicht geöffnet sein muss, welche das Dokument enthält.
Dazu habe ich dann die Formel @Command([OpenView] ... eingefügt. Das Dokument wird nun auch geöffnet.
Leider habe ich jetzt auch eine Ansicht geöffnet, die ich eigentlich garnicht geöffnet haben möchte.
Einen @Command([CloseView] ... gibts leider nicht.
Daher meine Frage: Wie kann ich diese (unerwünschte) Ansicht wieder schliessen ? (am besten sofort nach dem öffnen des Dokuments)
Oder gibt es eine andere Vorgehensweise ?
Vielen Dank.
Karlo
Peter Klett:
Mach es mit Script. Über picklistcollection holst Du Dir das Dokument und öffnest es direkt
Karlo F.:
Danke, Peter, für die Antwort.
Ich habe mir gleich die Funktion PickListCollection in der Hilfe angesehen und ein dort bereitgestelltes Beispiel für meine Zwecke abgeändert.
Der Dialog zum auswählen des Dokuments wird mir auch angeboten, aber leider werden ALLE Dokumente angeboten und nicht nur die mit der entsprechenden Kundennummer (S_KDNR). Die Ansicht ist nach der Kundennummer kategorisiert. In der Formel @PickList konnte ich eine entsprechende Kategorie angeben und mir wurden nur die Dokumente mit einer entsprechenden Kategorie (hier die Kundennummer) zur Auswahl angeboten.
Wie kann ich das in LS erreichen ?
koehlerbv:
Das funktioniert haarscharf genauso wie in der Formelsprache - der letzte Parameter gibt die anzuzeigende Category einer entsprechenden Ansicht an, und dann werden auch nur die Dokumente innerhalb dieser Category zur Auswahl angeboten.
HTH,
Bernhard
Karlo F.:
Jetzt funktionierts. Vielen Dank.
--- Code: --- Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim aktdoc As NotesDocument
Dim dok As NotesDocument
Dim titel As String
Dim uidoc As NotesUIDocument
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set aktdoc = uidoc.Document
titel = "Vorhandene Dokumente für die Kundennummer " + Trim$(aktdoc.GetItemValue("S_KDNR")(0))
Set collection = workspace.PickListCollection( _
PICKLIST_CUSTOM, _
False, _
"DominoServer", _
"db.nsf", _
"A_HilfsAnsicht", _
titel, _
"Wählen sie das gewünschte Dokument", _
Trim$(aktdoc.GetItemValue("S_KDNR")(0)) )
If collection.Count = 1 Then
Set dok = collection.GetFirstDocument()
Call workspace.EditDocument(False, dok)
Else
Messagebox "Fehler aufgetreten",, _
"Dieser Fehler darf eigentlich nicht passieren."
End If
--- Ende Code ---
Einen kleinen "Schönheitsfehler" gibts aber noch:
Ich hätte gerne, dass immer mit der aktuellen (geöffneten) Datenbank gearbeitet wird - ob das nun lokale Replik ist oder die Datenbank auf dem Server - das sollte egal sein.
Die Angabe des Servers und der Datenbank ist wohl zwingend. Ein Leerstring produziert einen Fehler, der besagt, dass es eben kein Leerstring sein darf.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln