Domino 9 und frühere Versionen > ND9: Entwicklung

[gelöst] DB für User auf anderen Server öffnen

(1/2) > >>

LordKiri:
Hallo zusammen,

ja ich komm schon wieder mit etwas, dass es im FOrum schon öfters gibt, ich komme trotzdem nicht weiter.
Folgendes Szenario, ich habe eine DB mit Repliken auf mehreren Servern und eventuell auch noch eine lokal.
Wenn der User nun die DB nicht auf seinem Mailserver öffnet, dann wird die DB geschlossen und die auf dem Mailserver geöffnet (zumindest theoretisch).

Gelöst über den Code im DB-Script\PostOpen:

--- Code: ---Set db = Source.Database

a_objRoles = Evaluate(|@UserRoles|)
objRet = ArrayGetIndex(a_objRoles, "[Admin]", 1)

If IsNull(objRet) Then
a_objMailSrv = Evaluate(|@MailDbName|)
strDBSrv = db.Server

If UCase(a_objMailSrv(0)) <> UCase(strDBSrv) Then
Set dbTmp = New NotesDatabase("","")

Call dbTmp.Openbyreplicaid(a_objMailSrv(0), db.Replicaid)

If dbTmp.isopen Then

Set db = Nothing

Call Source.Close
Print "Database closing"

Call ws.Opendatabase(a_objMailSrv(0), dbTmp.Filepath, , , True)
Print "Database server changed!!!"

Exit Sub
End If
End If
End If
--- Ende Code ---

Nur öffnet er die DB auf dem Mailserver ohne Rahmengruppe im Hintergrund, mit der Meldung in der Statusleiste(?) unten : "Der Inhalt der Rahmengruppe konnte nicht geladen werden. Datenbank wird ohne Rahmengruppe geöffnet."
Und noch schlimmer die "Falsche" bleibt offen.

Ist jetzt irgendwie nicht so hübsch, was mache ich falsch?

Warum wir das so machen (möchten), in erster Linie, dass die Leute keine lokale Repliken öffnen, wenn sie online sind.

Danke im Voraus...

CarstenH:

--- Code: --- Dim ws As New NotesUIWorkspace
Dim db As New NotesDatabase( "", "" )
Call db.OpenMail
Call ws.OpenDatabase(db.Server,db.FilePath,,,True)
--- Ende Code ---

Öffnet die Mail-DB immer so, wie sie in der aktuell aktiven Arbeitsumgebung angegeben ist.
OpenMail ist übrigens das Script Pendant zu @MailDbName ohne das hässliche Evaluate ;)

LordKiri:
Hallo,

danke für die schnelle Antwort, aber ich glaube ich habe mich nicht eindeutig ausgedrückt.
Es geht nicht um die Maildatenbank, ich benutze nur die Maildatenbank, um mir den "richtigen" Server zu besorgen....

Peter Klett:
Vermutlich ist es ein Reihenfolgeproblem. Ich würde das Schließen der Datenbank im  PostOpen vornehmen, dort globale Variablen für die neu zu öffnende Datenbank setzen, und so spät wie möglich (vielleicht im Terminate) bei gesetzten globalen Variablen die Datenbank öffnen. Wenn das immer noch zu früh ist, würde ich dort mit Formelsprache einen Agenten starten, der das Neu-Öffnen vornimmt, der läuft m.W. noch später

LordKiri:
Hallo,

habe es jetzt so probiert, mit dem "Terminate".
Die "falsche" Datenbank geht einfach nicht zu, er führt deswegen auch das "Terminate" gar nicht aus.

Schließe ich dann die Datenbank von Hand, bekomme ich die Fehlermeldung "Sie können kein Verzeichnis zu Ihrem Arbeitsbereich hinzufügen".

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln