Domino 9 und frühere Versionen > ND6: Entwicklung

beim öffnen einer Datenbank, abfragen ob Server erreichbar

<< < (3/3)

TMC:

--- Zitat von: koehlerbv am 15.06.05 - 20:51:39 ---Ist der Code in der Datenbank selber untergebracht, kann das prinzipiell nicht funktionieren - entweder die DB wurde dann bereits geöffnet oder der Prozess des Öffnens läuft bereits. Die von Jens erwähnten Klassen (und alle anderen) nutzen Dir dann herzlich wenig, da Du die DB - sofern sie vom falschen Ort geöffnet wird - wieder schliessen müsstest und damit würde auch der Code beendet.
--- Ende Zitat ---

Hmm, sicher, Bernhard?

Folgender Ansatz:


--- Code: ---Sub Click(Source As Button)

Const DESTINATION_SERVER$ = "SERVER"
Const DESTINATION_PATH$ = "PFAD/DB"

On Error Goto ErrorHandler

Dim session As New NotesSession
Dim dbThis As NotesDatabase
Dim uidbThis As NotesUIDatabase
Dim uiws As New NotesUIWorkspace

Set dbThis = session.CurrentDatabase

If Not dbThis.Server = "" Then Goto GoOut 'Database has been opened on a server, so we go out here

Msgbox "User arbeitet lokal, wir öffnen ein neues Fenster mit der Server-DB"

Set uidbThis = uiws.CurrentDatabase
Call uidbThis.Close

Call uiws.OpenDatabase( DESTINATION_SERVER, DESTINATION_PATH, , , True)

GoOut:
Exit Sub
ErrorHandler:
ErrorMsg
Resume GoOut
End Sub
--- Ende Code ---

Hab aber jetzt keinen Server hier, sondern konnte nur lokal mit einer 2. DB testen.

1. ist hier die OpenDatabase-Property newInstance = True interessant.
2. ist die Close Method der NotesUIDatabase-Klasse interessant.

Man könnte jetzt noch damit spielen, uiws.OpenDatabase VOR dem "Call uidbThis.Close" aufzurufen, falls da was nicht klappt.

Aber IMHO sollte das so gehen.

Matthias

koehlerbv:
Matthias, keine Frage - sowas geht. Aber dann ist ja immer noch die "falsche" DB geöffnet und kann wieder verwechselt werden usw. Man würde aus der nun geöffneten DB auch die ursprüngliche "falsche" via WinAPI wieder schliessen können, aber auch das ist m.E. nicht der (sichere) Weisheit letzter Schluss. Es bleibt j auch immer die Frage: Was ist überhaupt der "richtige Server" - die Frage steht ja nach wie vor und ist m.E. nicht simpel zu beantworten.

So, wie von Dir vorher beschrieben (deutliche Anzeige des aktuell verwendeten Servers bzw. "local") zu verfahren und die Nutzer zu sensiblisieren, ist m.E. auch sehr gangbarer Weg (wozu ist der Mensch sonst noch da, als die Maschine zu kontrollieren. Naja, hier ein schwaches Argument).

Um versehentlich zu langes Arbeiten ohne Serverkontakt (sprich: Erfolgreiche Replizierung) arbeite ich bei in dieser Hinsicht kritischen DB mit einem TimeStamp in einem Setup-Dok, welches nur vom massgeblichen Server stammen kann. Ist dieser Wert zu niedrig (sprich: Es wurde nicht repliziert oder auf dem Server läuft etwas schief), dann werden alle entscheidenden Aktionen in der DB (im FrontEnd) nicht mehr zugelassen. Erst nach der Replikation passt der TimeStamp wieder.

Wie dem auch sei: Wir haben es mit einer verteilen Umgebung zu tun, und das ist bekanntermassen ein sehr weites Feld. Und die bookmarks.ntf ist sicherlich nicht DIE Antwort auf diese Problematik.

Bernhard

TMC:

--- Zitat von: koehlerbv am 16.06.05 - 23:43:46 ---Aber dann ist ja immer noch die "falsche" DB geöffnet
--- Ende Zitat ---

Wie meinst Du das?

Die Help meint:

--- Zitat ---notesUIDatabase.Close
Closes all views and documents in the database, then closes the database.

--- Ende Zitat ---

Bei meinem Test war das auch so: in einem neuen Fenster öffnet sich eine neue DB (in meinem lokalen Test hab ich eine andere DB öffnen lassen), und die aktuell offene DB schließt sich komplett mit allen offenen Doks. Wie gesagt, auf einem Server hab ich das noch nicht getestet.

Ich denke so ist das Ziel erreicht. Jetzt nur noch eben die "Qual der Wahl": welchen Server nimmt man? Kann je nach Domino-Infrastruktur anders zu lösen sein.

Matthias

koehlerbv:
Matthias, wenn das mit zwei lokalen DBs klappt, klappt das auch mit Repliken auf "local" und auf einem Server. Ich muss mir Deinen Weg unbedingt vornehmen - der funktionierte bei meinen letzten Tests nicht. Aber Schande über mich: Ich habe das wirklich lange nicht mehr ausprobiert (und bin eben immer andere Wege gegangen, die in der Regel auch notwendig waren wegen dem von Dir schon erwähnten Fakt: "Jetzt nur noch eben die "Qual der Wahl": welchen Server nimmt man?").

Ergo: Vielen Dank für Deine Mühen. Und das ganze Thema (mit allem Drumherum) sollte weiter diskutiert werden - das wird sicherlich viele interessieren. Ich bleib' da auch mit dran.

Bernhard

TMC:
Kein Thema, gern geschehen. War nur so eine Idee die mir kam, daher hab ich mir das näher angesehen.

Gute Nacht,
Matthias

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln