Hallo,
ich habe folgende (einfache) Aufgabe zu lösen:
Ein Framset mit z.B. 7 Frames soll mit verschiedenen Elementen dynamisch gefüllt werden. Um dies an die Benutzerbedürfnisse anpassen zu können soll es Parametergesteuert geschehen (je User aus dem Profil gelesen).
Der Parameter-Satz besteht aus einer Liste von 7 Elementen. Jedes Element beinhaltet:
Frame | Element-Typ | Element-Name/Parameter
Der Frame gibt an, wohin ein Inhalt gehen soll.
Der Element-Typ definiert, welcher Aufruf stattfindet: eine View, eine Page oder Ein Notes Dokument.
Der Element-Name bzw. Parameter gibt an, wie das anzuzeigende Element heisst - ein Name einer Page, einer Ansicht oder die Adresse eines Notes-Dokuments.
Ein Parametersatz sieht etwa so aus:
Right1|URLOpen|Notes:///C1257424005D891F/7E24381223390D92C1256DCF00579CDE/F44276FD21011909C12569F800368186
Mid2|URLOpen|Notes:///C1257424005D891F/0CD6F04BE7C45910C1256932005266A8/304EB58BF41B5436C12574240062EC36
Left2|OpenPage|MainPage
Left1|OpenPage|DBTitlePage
Mid1|OpenView|SPECS#View
BodyRight|OpenView|ADRCHK#View
Left3|OpenView|ADR#View
Der Code dazu so:
_content := @GetProfileField("profile01";"StartFrameSettings");
_debug := @GetProfileField("profile01";"StartFrameDebug") = "Y";
_loops := @Elements(_content);
_iteration := 1;
@While( _loops >= _iteration;
_i_parameter := @Subset( @Subset( _content; _iteration) ;-1);
_i_frame := @Word( _i_parameter ; "|" ; 1);
_i_type := @UpperCase(@Word( _i_parameter ; "|" ; 2));
_i_prm1 := @Word( _i_parameter ; "|" ; 3);
_i_prm2 := @Word( _i_parameter ; "|" ; 4);
@SetTargetFrame(_i_frame);
@If( _debug ; @Prompt([Ok]; _i_frame ; @Implode( _i_type : _i_prm1 ;"...." )); "");
@If( _i_type = "OPENPAGE" ; @Command([OpenPage]; _i_prm1); "" );
@If( _i_type = "OPENVIEW" ; @Command([OpenView]; _i_prm1); "" );
@If( _i_type = "URLOPEN" ; @URLOpen(_i_prm1);"" );
_iteration := _iteration + 1)
Das ganze ist als Agent realisiert und wird entweder per Button aufgerufen oder beim Öffnen der DB im DB-Open Event.
Das seltsame ist:
1.) Beim ersten Durchlauf funktioniert alles prima. Egal ob als DB Script oder als Macro, der über das UI aufgerufen wird. Aber nur in der Reihenfolge wie oben mit dem Parameter (siehe 3).
2.) Beim zweiten Durchlauf werden die Dokumente und Pages in neuen Tabs geöffnet, statt im Frameset. Die Views landen aber wieder im Frameset.
3.) Ändert man die Reihenfolge im Parametersatz, so, dass die Dokumentaufrufe (@URLOPEN) nach dem Aufruf einer View kommen, wird das zweite Dokument auch schon beim ersten Durchlauf in einem neuen Tab geöffnet. Das erste Dokument landet noch richtig im Frame!
Es scheint da eine Reihenfolge zu geben, ab der ein Landen von Dokumenten in einen Frame nicht mehr geht.
Kann mir da jemand auf die Sprünge helfen? Ich versteh's nicht und hab auch keine Hinweise gefunden.
1000 Dank.
Jürgen