Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: giggles am 08.10.04 - 07:56:22

Titel: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: giggles am 08.10.04 - 07:56:22
Hallo,

ich würde gerne eine Ansicht aus einer fremden Datanbank in einem Rahmen der aktuellen Datenbank öffnen. Das heisst ich habe im linken Rahmen eine Gliederung, die verschiedene Ansichten im rechten Fenster öffnet. Wenn die Ansicht, aber aus einer anderen Datenbank geöffnet wird, wird immer das ganze Fenster verwendet.

Ich habe schon einiges probiert:


Hat jemand eine Idee???

Danke
Sabine


Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: Driri am 08.10.04 - 09:29:02
Hallo,

wir haben so etwas mal folgendermaßen gelöst :

Gliederung mit berechneter URL und als Formel so etwas in der Art

_ThisDBSrv := @Subset(@DbName; 1);
_AbbDBSrv := @Name([CN];_ThisDBSrv);
@SetTargetFrame("content");
_URLString := "notes://"+@If(_ThisDBSrv=""; "db.nsf/View?OpenView"; _AbbDBSrv+"/path/db.nsf/View?OpenView");
_URLString

Die Formel funktioniert dann z.B. auch mit lokalen Repliken.
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: giggles am 08.10.04 - 10:07:38
Hallo Ingo,

das ist genau das, was ich wollte.
Vielen herzlichen Dank und einen schönen Tag noch

Sabine
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: rar am 28.11.06 - 10:53:56
Hallo ihr....

Auf der Suche nach einer Lösung für mein Problem bin ich auf diesen Fred gestoßen.

Bei mir schaut es ähnlich aus.
Ich habe in meiner DB eine Rahmengruppe mit 2 Rahmen. Im ersten Rahem ist eine Seite mit einer Aktion bzw. Gliederung. Wenn ich dann auf die Aktion clicke, soll im 2ten Rahmen eine Ansicht einer anderen DB aufgehen. Es handelt sich dabei um die ($Calendar) verschiedener MailDBs.
Das ganze sollte aber flexibel sein. Ich habe also einer Ansicht, inm der in Personendokumenten, in denen Pfad und Server der MailDB eingetragen ist. Der User sollte also auf den Button clicken, dann möchte ich ihm eine Auswahl anbieten, aus der er eine MailDB auswählen kann und dann sollte sie aufgehen.

Mit Script hab ich es leider nicht hinbekommen, da immer die DB in einem neuen Fenster aufgeht.
Code
Call ws.SetTargetFrame("MK2")
Call ws.OpenDatabase( doc.hms(0), doc.Pfad(0), "Calendar", , , True )
geht nicht
Code
strUrl = "notes://" + server + "/" + pfad + "/($Calendar)?OpenView"
Call ws.SetTargetFrame("MK2")
Call ws.UrlOpen(strUrl)
geht nicht

Dann habe ich Ingos Lösung versucht
Code
_Pfad1 := @PickList( [Custom] : [Single] ; @DbName ; "Ansicht" ; "Kalender öffnen"; "Welchen Kalender möchten sie öffnen?" ; 4);
_Pfad2 := @ReplaceSubstring( _Pfad1 ; "\\" ; "/" );

_URLString := "notes://" + @If( @Right( _Pfad2 ; 4 ) = ".nsf" ; _Pfad2 ; _Pfad2 + ".nsf") + "/($Calendar)?OpenView";
_URLString
Klappt aber auch nicht. Da motzt notes immer, dass das Ergebnis der Formel Text sein soll. Wenn ich dann ein @Text um die Picklist pack, ist "eine Adresse von Formeln mit Seiteneffeckten in diesem Kontext nicht erlaubt". (Hab ich vorher noch nie gesehen diese komiche Meldung)

Hat jemand vielleicht eine Idee, wie ich die Ansichten sonst noch aufbekommen könnte, bzw. was ich falsch mach?

lG
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: Axel am 28.11.06 - 11:14:53
Versuch's mal mit den Einstellungen im Bild.

Axel
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: rar am 28.11.06 - 11:25:28
Hi Axel,
ich möchte ja nicht den Kalender des Users anzeigen lassen, sondern ihm die Möglichkeit geben sich Kalender verschiedener Personen anzeigen zu lassen.
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: rar am 05.12.06 - 10:36:06
So, jetzt ist die DB bis auf mein blödes Rahmenproblem fertig. Leider habe ich immer noch keine Lösung gefunden...  :-\
Hat keiner eine Idee, wie ich das lösen könnte?
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: Driri am 05.12.06 - 11:01:14
Was genau ist denn jetzt noch das Problem ? Hast Du immer noch die Fehlermeldung aus der Formel oder öffnet sich der gewählte Kalender nicht im gewünschten Frame ?

Hast Du schon mal versucht, den Alias zu benutzen ? Evtl. gibt das mit den Sonderzeichen in der URL Probleme.

Also nicht "/($Calendar)?OpenView" sondern "/Calendar?OpenView".
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: rar am 05.12.06 - 11:17:01
Der Alias bringt leider keine verbesserung mit sich.

Wenn ich eine Berechnete Url hernehme, kommt das was ich schon vorher beschrieben habe...
das Ergebnis der Formel Text soll sein. Wenn ich dann ein @Text um die Picklist pack, ist "eine Adresse von Formeln mit Seiteneffeckten in diesem Kontext nicht erlaubt
Code für die Url:
Code
_Pfad1 := @PickList( [Custom] : [Single] ; @DbName ; "Ansicht" ; "Kalender öffnen"; "Welchen Kalender möchten sie öffnen?" ; 4);
_Pfad2 := @ReplaceSubstring( _Pfad1 ; "\\" ; "/" );

_URLString := "notes://" + @If( @Right( _Pfad2 ; 4 ) = ".nsf" ; _Pfad2 ; _Pfad2 + ".nsf") + "/Calendar?OpenView";
_URLString
(in der Ansicht steht in der 4ten Spalte Mailserver + "/" + Pfad)

Wen ich das ganze als Aktion verpacke, geht der Kalender zwar auf, aber nicht in dem gewünschten Frame, sondern als neues Fenster. Das ist der Code für die Aktion:
Code
_Pfad1 := @PickList( [Custom] : [Single] ; @DbName ; "Ansicht" ; "Kalender öffnen"; "Welchen Kalender möchten sie öffnen?" ; 4);
_Pfad2 := @ReplaceSubstring( _Pfad1 ; "\\" ; "/" );

_URLString := "notes://" + @If( @Right( _Pfad2 ; 4 ) = ".nsf" ; _Pfad2 ; _Pfad2 + ".nsf") + "/Calendar?OpenView";
@SetTargetFrame( "Mk2" );
@URLOpen(_URLString)

Blödes Notesverhalten  :P

lG
-daniel
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: rar am 05.12.06 - 14:03:44
Puhhh.
Hab endlich eine Lösung gefunden, die funktioniert.
Danke fürs Kopf zerbrechen.
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: Axel am 05.12.06 - 14:06:23
Hab endlich eine Lösung gefunden, die funktioniert.

Lässt du uns an deiner Lösung teilhaben !?

Vielleicht kann diese mal jemandem mit dem gleichen oder ähnlichen Problem eine wertvolle Hilfe sein.


Danke.


Axel
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: rar am 05.12.06 - 14:46:33
Ich arbeite jetzt mit Profildokumenten.

Also ich habe als erstes habe ich eine leere Page. In dem Rahmen, in der der Kalender angezeigt werden soll habe ich eine Berechnete Url angegeben. Die Formel
Code
_x := @GetProfileField( "Kalender" ; "Mk2" ; @UserName);
_Server := @Name([CN];@Subset( @DbName ; 1 ));
_Pfad := @ReplaceSubstring( @Subset(@DbName ; -1 ) ; "\\" ; "/" );
_Seite := "notes://" + _Server + "/" + _Pfad + "/Leer?OpenPage";
@If(_x = "" ; _Seite ; _x)
zeigt die leere Seite an, wenn im Profildokument nichts anderes drin steht.

In den Personendokumenten ein berechnetes Feld mitfolgendem Code erstellt:
Code
_Pfad1 := @Name([CN];MailServer) + "/" + MailPfad;
_Pfad2 := @ReplaceSubstring( _Pfad1 ; "\\" ; "/" );

_URLString := "notes://" + @If( @Right( _Pfad2 ; 4 ) = ".nsf" ; _Pfad2 ; _Pfad2 + ".nsf") + "/Calendar?OpenView";
_URLString

Wenn der User jetzt in einem anderen Rahmen auf eine Ation clickt. schreib ich mit folgender Formel die Url des gewählten Dokumentes in das Profildokument und berechne das Fenster neu.
Code
_Pfad := @PickList( [Custom] : [Single] ; @DbName ; "aVorstand" ; "Kalender öffnen"; "Welchen Kalender möchten sie öffnen?" ; 4);
@SetProfileField( "Kalender" ; "Mk2" ; _Pfad );
@Command([ReloadWindow])
So wird dann der Kalender im Fenster angezeigt.

Mir ist klar, dass der Weg etwas umständlich ist, aber er funzt.

lG
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: Driri am 05.12.06 - 15:12:07
Na hoffentlich geht das gut. Profildokumente werden gecached und das kann gerade bei solchen Aktionen unschöne Nebenwirkungen haben.
Dann würde ich lieber normale Dokumente als Konfigurationsdokument je User erstellen. Profildokumente eignen sich IMO nur bei statischen Informationen.
Titel: Re: View aus einer fremden Datenbank in Frame öffnen
Beitrag von: rar am 05.12.06 - 15:19:12
Danke für den Tipp, Ingo.
Werde ich gleich umbauen.