Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Karlo F. am 20.08.14 - 16:06:50

Titel: Ansicht mit Formel schliessen
Beitrag von: Karlo F. am 20.08.14 - 16:06:50
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);

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
Titel: Re: Ansicht mit Formel schliessen
Beitrag von: Peter Klett am 20.08.14 - 16:28:51
Mach es mit Script. Über picklistcollection holst Du Dir das Dokument und öffnest es direkt
Titel: Re: Ansicht mit Formel schliessen
Beitrag von: Karlo F. am 20.08.14 - 17:56:24
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 ?

Titel: Re: Ansicht mit Formel schliessen
Beitrag von: koehlerbv am 20.08.14 - 18:57:52
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
Titel: Re: Ansicht mit Formel schliessen
Beitrag von: Karlo F. am 21.08.14 - 13:34:08
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

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.

Titel: Re: Ansicht mit Formel schliessen
Beitrag von: cebolina am 21.08.14 - 13:43:03
nimm
Code
db.Server, _
db.FilePath, _
anstatt
Code
"DominoServer", _
"db.nsf", _

Gruß Stefan
Titel: Re: Ansicht mit Formel schliessen
Beitrag von: pram am 21.08.14 - 13:45:42
ersetze "DominoServer" durch db.server und "db.nsf" durch db.filepath  (ohne " ")
/edit: cebolina war schneller...

Der Fehler, der eigentlich nicht passieren darf, kommt übrigens, wenn der Benutzer auf "abbrechen" klickt

Gruß
Roland
Titel: Re: Ansicht mit Formel schliessen
Beitrag von: Karlo F. am 21.08.14 - 14:02:56
Funktioniert  :) Danke, Stefan und Roland.

Upps, stimmt - ich nehme diese MessageBox raus - bei "Abbrechen" brauchts keine weiter Info an den User. :)