Domino 9 und frühere Versionen > ND9: Entwicklung
Serverwechsel beim Öffnen einer DB übers Lesezeichen klappt nicht
FrankLU:
Hallo!
Nachdem mir bei meinem letzten Problem wieder mal so gut geholfen wurde, habe ich nun noch eins. Bei der Frage, wie ich den Benutzer dazu bringen kann, eine DB-Replik von einem bestimmten Server zu öffnen, wurde mir von ronka folgendes geraten:
--- Zitat ---@PostedCommand([FileOpenDatabase]; RichtigeServer : DbName )
Und mit einen @Command([FileCloseWindow]) sollte das aktuelle dann auch vorher geschlossen werden können.
Du kannst sogar noch ein schritt weiter gehen und den das Icon Ändern, entweder löschen oder umbenennen (andere server setzen) damit die es auf den Server auch nicht mehr öffnen könnten.
@PostedCommand([RenameDatabase]; @DbName ; S2 );
--- Ende Zitat ---
Mein Problem ist nun aber: Wo baue ich diese Befehle ein?
Meine DB öffnet beim Start eine Rahmengruppe, die zwei Ansichten enthält. Bisher habe ich versucht, der "richtige" Server über einen Wert in einem Parameter-Dokument zu setzen. Das Script dazu wird im PostOpen im DatenbankScribpt gestartet.
--- Zitat ---Server1 := @DbColumn("";"";"viewPar";8);
Server2 := @Subset(@DbName;1);
@Prompt([Ok]; "Test"; Server1 + " - " + @DBName + " -");
@If(Server2 != Server1;
@Do(
@Command([FileCloseWindow]);
@PostedCommand([RenameDatabase]; @DbName; Server1);
@PostedCommand([FileOpenDatabase]; Server1:@Subset(@DbName;-1))
);
""
)
--- Ende Zitat ---
1. Problem: Der Wert von Server1 wird aus dem Parameter-Dokument ermittelt. Der Wert von Server2 bzw. @DBName leider nicht; das Feld bleibt leer. -> Das Script läuft ins IF.
2. Problem: Wenn die DB dann (von dem "alten Server, der auf dem Lesezeichen steht) geöffnet wird, dann gehen zwei Reiter auf: Der erste Reiter zeigt die untere Ansicht der Rahmengruppe, der zweite Reiter die komplette Rahmengruppe.
Irgendwie klappt das alles nicht so, wie ich möchte. Ich weiß aber auch nicht mehr weiter. Wäre toll, wenn ihr noch eine Idee habt.
Danke im voraus!
Frank
ronka:
Ich sehe kein wirklichen problem in dein Code bis auf den nicht richtige darstellung der @DBName.
Dein Prompt musste ein @Implode( @DBName ; ":" ) bekommen um den darstellung 'richtig' zu bekommen, weil der funktion ein mehrfachwert zurück gibt.
Ich habe das erfolgreich an mehrere stellen mit folgenden stuckchen "script" umgesetzt:
DBName := @Subset ( @DbName ; -1 );
S1 := @Subset ( @DbName; 1 );
@If( @lowercase(@Name([CN];S1)) *= "oldserver" ; "" ; @Return( "" ) );
S2 := "newserver/orga" ;
@Command([FileCloseWindow]);
@PostedCommand([RenameDatabase]; @DbName ; S2 );
@PostedCommand([FileOpenDatabase]; S2 : DbName )
Wobei 'oldserver' und 'newserver/orga' natürlich aus dein Parameter dokument kommen dürfen.
Ich würde das allerdings über ein Profil dokument machen, aber das ist dir überlassen.
FrankLU:
Hallo ronka,
vielen Dank dafür, dass Du Dich meines Problems angenommen hast.
Wo hast Du dieses Script eingbaut? Ich habe es im Datenbankscript im PostOpen gesetzt, ohne Erfolg bisher. An dieser Stelle bekomme ich mit @DBName keinen Wert zurückgeliefert.
Frank
ronka:
gerade getestet in 8.5.3 und 9.0.1 und der Postopen macht nichts mehr wenn es sich um Formelsprache handelt die mit UI zu tun hat..
SEHR Merkwürdig
ein
@Prompt([Ok];"hier";"Anfang")
wird nichtmals mehr ausgefuhrt.
Es scheint das du es mit Lotusscript tun musstest in diesen sinn...
--- Code: ---Sub Postopen(Source As Notesuidatabase)
Dim db As NotesDatabase ("", "")
Dim server1 As String, server2 As string
' Get values Server1 and Server2
Server1 = "cn=test/o=orga"
Server2 = "cn=test2/o=orga"
If lcase( source.database.server ) = lcase( server1 ) Then
if db.Openbyreplicaid(Server2, source.database.Replicaid) Then
'ok und alte Datenbank schließen
source.close
Else
'problem
End If
End If
End Sub
--- Ende Code ---
FrankLU:
Danke schön! Und ich dachte schon, ich sei zu blöd... ;)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln