Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Alexander 28 am 17.01.13 - 10:00:46

Titel: Name der aktuell geöffneten "persönlichen" View ermitteln
Beitrag von: Alexander 28 am 17.01.13 - 10:00:46
Hallo. Habt ihr eine Idee, wie ich den Namen einer geöffneten View auslesen kann, wenn es sich um eine persönliche handelt, die in der desktop.dsk gespeichert ist? habe es mit ...

Set view = ws.Currentview.View

und

Dim viewname As Variant
viewname = Evaluate(|@UpperCase(@ViewTitle)|)

probiert. Klappt nur bei öffentlichen Ansichten. Bei pers. ist Return leer.
Gibts einen anderen Weg?

Gruß Alex

Titel: Re: Name der aktuell geöffneten "persönlichen" View ermitteln
Beitrag von: Driri am 17.01.13 - 10:56:43
Du hast aber schon mit view.Name oder view.Aliases auf die Namen zugegriffen, oder ?

Edit : Habs gerade ausprobiert, funktioniert nicht.

Dann nimm doch einfach die NotesUIView und lies dann über die ViewName-Property den Namen aus. Das funktioniert auch bei lokalen gespeicherten Ansichten.

Set uiview = ws.CurrentView
viewname = uiview.ViewName
Titel: Re: Name der aktuell geöffneten "persönlichen" View ermitteln
Beitrag von: marschul am 17.01.13 - 11:00:10
Wenn ich mich richtig erinnere, kommt man bei privaten Views im Desktop über den Weg der UIView nicht an die Backend-View heran. Die Frontend-View geht m.W. aber und diese hat auch die Properties .ViewName und .ViewAlias (siehe Designer-Hilfe).
Titel: Re: Name der aktuell geöffneten "persönlichen" View ermitteln
Beitrag von: Alexander 28 am 17.01.13 - 12:32:02
Stimmt, den ViewNamen habe ich nun. Aber jetzt möchte ich alle Docs in der View in eine EntryCollection packen um sie danach in einen Ordner zu kopieren. Leider liefern mir    

Dim vc As NotesViewEntryCollection
Set vc = view.Allentries

einen Fehler zurück. Hier mal mein Code.

Code
Function GrafikDieseAnsicht( ansichtname As String )

	Dim session As New NotesSession
	Dim ws As New NotesUIWorkspace
	Dim newuidoc As NotesUIDocument
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim NotesUIView As NotesUIView

	Dim newdoc As NotesDocument
	Dim viewname As Variant
	Dim profildoc As NotesDocument
	Set db = session.CurrentDatabase
	Set profildoc = db.GetProfileDocument("CNF Feiertage")
	

	Dim vc As NotesViewEntryCollection

	
	If ansichtname = "" then
		Set view = ws.Currentview.View

	Else
		
		Set NotesUIView = ws.Currentview
		viewname = NotesUIView.Viewname
				
		Set view = db.Getview(viewname)
				
	End If
	
	view.AutoUpdate = False
	Set vc = view.Allentries

       Call vc.Putallinfolder("Buecher", True)
End Function

Wenn ich die vc mit den docs einer öffentlichen view fülle klappt es problemlos.
wie kriege ich die docs in der aktuellen privaten view in meinen ordner?
Titel: Re: Name der aktuell geöffneten "persönlichen" View ermitteln
Beitrag von: m3 am 17.01.13 - 12:56:30
1) Fehlerbehandlung einbauen
2) Genaue Fehlermeldung. Mit "einen Fehler" fangt niemand was an
Titel: Re: Name der aktuell geöffneten "persönlichen" View ermitteln
Beitrag von: marschul am 17.01.13 - 13:06:25
Das Set View = Db.GetView(ViewName) instanziert die Objektvariable vermutlich entweder gar nicht (falls die private View allein besteht) oder mit der "Vorlage"-View (wenn es heißt "Öffentlich - privat bei erster Benutzung"). Ist dann eine Selektion mit @UserName enthalten, ist die öffentliche Basis-View natürlich leer.
Alternative: Baue das Select nach (geht auch dynamisch) und mach ein Db.Search. Ist zwar langsamer als die EntryCollection, aber sollte zum gewünschten Ergebnis führen...
Titel: Re: Name der aktuell geöffneten "persönlichen" View ermitteln
Beitrag von: Alexander 28 am 17.01.13 - 13:15:23
Ja, das leuchtet mir ein. Mal schauen wie ich weitermache. Der Fehler den ich bekomme heißt übrigens: "Index kann nicht auf dem Server erstellt werden."