Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: C_T am 08.12.14 - 16:58:55

Titel: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: C_T am 08.12.14 - 16:58:55
Hallo alle miteinander,

ich habe ein kleines Problem bei dem ich auf dem Schlauch stehe und hoffe Ihr könnt mir helfen.

Folgendes Szenario:

Ich habe eine DB in der Dokumente mit einem eindeutigen Schlüssel enthalten sind. (Projektnummer)
Zu diesem eindeutigen Schlüssen gibt es eine zweite DB diverse Dokumente (Tests)

Sprich
DB A Projekte eindeutiger Schlüssel (Key A)
DB B Tests zu den Projekten (sprich X Tests pro Key A)

Jetzt möchte ich per Button in DB A eine Ansicht in DB B öffnen (Die Ansicht ist Kategorisiert nach Key A) und direkt zu der passenden Kategorie springen.

Jetzt habe ich mir gedacht sowas wie "OpenDatabase" oder per Formel "Command([FileOpenDBRepID];..." würde mit entsprechenden Parametern würde funktionieren. Tut es aber leider nur halb.

Die gewünschte Ansicht wird geöffnet und auch direkt zur passenden Kategorie gesprungen. Aber die DB ist dann zweimal offen.

Einmal im StandardFrameSet + StandardAnsicht
Einmal mit der richtigen Ansicht in diesem 0815 Frameset.

Woran liegt das?
Hat von euch einer eine Idee?
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: koehlerbv am 08.12.14 - 21:07:04
Und wie lautet der komplette Code? Wie heissen die Frames? Haben sie die Standard-Notes-Bezeichner oder eigene Phantasienamen?

Bernhard
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: C_T am 09.12.14 - 09:19:19
Hallo Bernhard,

danke für die schnelle Antwort.

Es sind alles komplett selbst erstellte (teils nicht von mir) Datenbank mit entsprechenden eigenen Namen der Views, Frames etc.

Anbei einmal Code Ausschnitte was ich schon so versucht habe:

Script 1
Code
Call workspace.OpenDatabase(testDB.Server,testDB.FilePath,"vAllByName",curDoc.TrialNumber(0),False)

Script 2
Code
Call workspace.OpenDatabase(testDB.Server,testDB.FilePath)
Call workspace.CurrentDatabase.OpenView(testview.Name,curDoc.TrialNumber(0),False)

Formel 1
Code
@Command([FileOpenDBRepID];_replicaID;"";"vAllByName";TrialNumber;@False;@False);

Formel 2
Code
@Command([FileOpenDBRepID];_replicaID);
@PostedCommand([SwitchView];"vAllByName");

Alle führen wie oben beschrieben zum selben Phänomen
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: rambrand am 09.12.14 - 09:48:52
Das sind leider nur Codefetzen die aus dem Gesamtkontext gerissen sind.
Wo definierst Du z.B. welcher Frame angesprochen werden soll?
Poste doch mal den kompletten Code des Buttons. Dann kann man nachvollziehen, was Du da eigentlich alles treibst.

Bye,
Markus
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: koehlerbv am 09.12.14 - 10:22:07
Ich werfe etwas direkter mal schon "SetTargetFrame" ein  :)

Bernhard
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: C_T am 09.12.14 - 10:48:20
Berhnhard, perfekt. Da macht doch direkt was klick bei mir, das hab ich echt mal wieder vergessen.

Das probier ich direkt aus.

Anbei aber schonmal die Buttons falls es nicht der Fehler ist.

Formel 1
DBSettingsDocUNID ist eine "Konfigurationsdokument" in der DB die die ReplicaID der DB B enthält

Code
_replicaID :=	@GetDocField(DBSettingsDocUNID;"GlobalTestResultReplicaID");
_replicaID := @Left(_replicaID;8)+":"+@Right(_replicaID;8);
@Command([FileOpenDBRepID];_replicaID);
@PostedCommand([SwitchView];"vAllByName");
REM {@Command([FileOpenDBRepID];_replicaID;"";"vAllByName";TrialNumber;@False;@False);};
REM {@Command([FileOpenDatabase];server:db;view;key;@False;@False);};

Formel 2
DBSettingsDocUNID ist eine "Konfigurationsdokument" in der DB die die ReplicaID der DB B enthält

Code
_replicaID :=	@GetDocField(DBSettingsDocUNID;"GlobalTestResultReplicaID");
_replicaID := @Left(_replicaID;8)+":"+@Right(_replicaID;8);
@Command([FileOpenDBRepID];_replicaID;"";"vAllByName";TrialNumber;@False;@False);

Script 1
Das Errorhandling habe ich mal der Übersichtlichkeit entfernt
Code
Sub Click(Source As Button)
'Global Definitions
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	
'DB Definitions
	Set curDB = session.CurrentDatabase()
	Set curUIDoc = workspace.CurrentDocument
	Set curDoc = curUIDoc.Document
	
'####################################################################################
	
	Set configDoc = curDB.GetView("vDBSettings").getFirstDocument() 'Konfigurationsdokument
	
	Set testDB = New NotesDatabase("","")
	Call testDB.OpenByReplicaID(curDB.Server,configDoc.GlobalTestResultReplicaID(0))
	
	If Not testDB Is Nothing Then
		Set testview = testDB.GetView("vAllByName")
		Call workspace.OpenDatabase(testDB.Server,testDB.FilePath,"vAllByName",curDoc.TrialNumber(0),False)			
	End If
End Sub

Script 2
Das Errorhandling habe ich mal der Übersichtlichkeit entfernt
Code
Sub Click(Source As Button)
'Global Definitions
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	
'DB Definitions
	Set curDB = session.CurrentDatabase()
	Set curUIDoc = workspace.CurrentDocument
	Set curDoc = curUIDoc.Document
	
'####################################################################################
	
	Set configDoc = curDB.GetView("vDBSettings").getFirstDocument() 'Konfigurationsdokument
	
	Set testDB = New NotesDatabase("","")
	Call testDB.OpenByReplicaID(curDB.Server,configDoc.GlobalTestResultReplicaID(0))
	
	If Not testDB Is Nothing Then
		Set testview = testDB.GetView("vAllByName")
		Call workspace.OpenDatabase(testDB.Server,testDB.FilePath)
		Call workspace.CurrentDatabase.OpenView("vAllByName")
	End If
End Sub

Script 3
Das Errorhandling habe ich mal der Übersichtlichkeit entfernt
Code
Sub Click(Source As Button)
'Global Definitions
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	
'DB Definitions
	Set curDB = session.CurrentDatabase()
	Set curUIDoc = workspace.CurrentDocument
	Set curDoc = curUIDoc.Document
	
'####################################################################################
	
	Set configDoc = curDB.GetView("vDBSettings").getFirstDocument() 'Konfigurationsdokument
	
	Set testDB = New NotesDatabase("","")
	Call testDB.OpenByReplicaID(curDB.Server,configDoc.GlobalTestResultReplicaID(0))
	
	If Not testDB Is Nothing Then
		Set testview = testDB.GetView("vAllByName")
		Call workspace.OpenDatabase(testDB.Server,testDB.FilePath)
		Call workspace.OpenFrameSet("start_ByName") 'Das ist ein Frameset das ich neu erstellt habe, welches die Ansicht "vAllByName" als Standardansicht hat.
	End If
End Sub
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: C_T am 09.12.14 - 13:07:00
Also folgendes funktioniert halb:

Es wir die richtige View geöffnet und er sprint zur richtigen Kategorie.
Jedoch wird zusätzlich die Standardansicht der DB B geöffnet und das versteh ich grad net.

Code
'Global Definitions
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	
'DB Definitions
	Set curDB = session.CurrentDatabase()
	Set curUIDoc = workspace.CurrentDocument
	Set curDoc = curUIDoc.Document
	
'####################################################################################
	
	Set configDoc = curDB.GetView("vDBSettings").getFirstDocument()
		
	Set testDB = New NotesDatabase("","")
	Call testDB.OpenByReplicaID(curDB.Server,configDoc.GlobalTestResultReplicaID(0))
	
	If Not testDB Is Nothing Then
		Set testview = testDB.GetView("vAllByName")
		
		Dim testUIDB As NotesUIDatabase
		Call workspace.OpenDatabase(testDB.Server,testDB.FilePath)
		Call workspace.SetTargetFrame("frame_bottom")		
		Call workspace.CurrentDatabase.OpenView(testview.Name,curDoc.TrialNumber(0))		
	End If
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: koehlerbv am 09.12.14 - 13:34:25
Da war doch noch irgendwas mit dem Parameter replaceView in OpenDatabase ...  ;)

Bernhard
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: C_T am 09.12.14 - 13:50:38
auch ausprobiert,

leider keinen Effekt
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: C_T am 09.12.14 - 14:29:23
OK vergesst es,

klarer Fall von

"Kopiere nie, aber auch NIE eine Ansicht die du nicht selbst gebaut hast."

Oder in Kurzform, da war Code in der Ansicht den ich nicht bemerkt habe und der einfach nur quatsch ist.
Titel: Re: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring
Beitrag von: pram am 12.12.14 - 09:08:00
"Kopiere nie, aber auch NIE eine Ansicht die du nicht selbst gebaut hast."

OT: Ich kenn das. Bei uns gibts für solche Fälle den Spruch "Wer kopiert, verliert"  ;)