Autor Thema: Ansicht einer anderen DB öffnen und zu einer bestimmten Kategorie spring  (Gelesen 3669 mal)

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
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?
« Letzte Änderung: 09.12.14 - 14:29:49 von C_T »
Viele Grüße

Christian T.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Und wie lautet der komplette Code? Wie heissen die Frames? Haben sie die Standard-Notes-Bezeichner oder eigene Phantasienamen?

Bernhard

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
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
Viele Grüße

Christian T.

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
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
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Ich werfe etwas direkter mal schon "SetTargetFrame" ein  :)

Bernhard

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
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
Viele Grüße

Christian T.

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
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
« Letzte Änderung: 09.12.14 - 13:32:36 von C_T »
Viele Grüße

Christian T.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Da war doch noch irgendwas mit dem Parameter replaceView in OpenDatabase ...  ;)

Bernhard

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
auch ausprobiert,

leider keinen Effekt
Viele Grüße

Christian T.

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
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.
Viele Grüße

Christian T.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
"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"  ;)
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz