Autor Thema: Frontend DB schliessen, andere Replik öffnen  (Gelesen 4046 mal)

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Frontend DB schliessen, andere Replik öffnen
« am: 10.04.14 - 13:36:06 »
Hi! Da manche Nutzer es irgendwie immer schaffen, internationale Repliken einer Datenbank zu öffnen, anstatt die auf dem lokalen Application-Server - und sich dann über die "lausige Lotus Notes Performance" beschweren - habe ich ein Skript programmiert, das auf Basis des Mailservers des Anwenders ermittelt, ob die dazu passende Replik geöffnet wurde und ggf. nach einer Abfrage die Replik auf dem richtigen Server öffnet. Die "falsche" Replik soll anschliessend geschlossen werden. Sieht dann so aus:

Code
Dim ws As New NotesUIWorkspace
Set uidb = ws.CurrentDatabase
...

'Open suitable server and close open db
Dim ndb As New NotesDatabase( suitableserver, path )
If Not ndb.IsOpen Then
MsgBox "Could not open database on server " & suitableserver & Chr$(10) &_
"Please contact your db admin",48,"Error"
Exit Sub		
End If

Call ws.Opendatabase(suitableserver, path,,,,True )					
Call uidb.Close()	

Wenn ich das in einer Aktion aus der bereits geöffneten Datenbank heraus teste, funktioniert es auch einwandfrei. Wenn ich den Code jedoch aus dem Datenbankscript im Postopen aufrufe, wird zwar die Frontend DB geschlossen, die gewähle Replik aber nicht geöffnet.

Woran kann das liegen?
« Letzte Änderung: 10.04.14 - 13:51:29 von jo@chim »
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #1 am: 10.04.14 - 13:53:20 »
Die REIHENFOLGE ist an dieser Stelle ganz essentiell...

Mache es so, so funktioniert es definitiv (habe ich hier vor ein paar Tagen benutzt):

Code
Call uidb.Close()
Call ws.Opendatabase(suitableserver, path)
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #2 am: 10.04.14 - 16:38:11 »
Funktioniert auch so rum nicht bei mir
Hast Du das auch im PostOpen stehen?
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #3 am: 10.04.14 - 17:39:42 »
Eventuell hängt es damit zusammen, dass Du Dir das uidb- Objekt über den NotesUIWorkspace ziehst..: Ersetze mal uidb durch Source, das ist der einzige Unterschied, den ich zu meinem Code erkenne, und der funktioniert in 8.5.3, 9.0 und 9.0.1...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Driri

  • Gast
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #4 am: 11.04.14 - 09:13:28 »
Müssen die User denn auf alle Server Zugriff haben ? Sonst kann man die Server ja auch einfach für "fremde" User sperren. Wir machen das hier auch so auf einem Server, auf dem wir Repliken von einigen Anwendungen liegen haben und auf dem eine Schnittstelle für Datenim- und exporte läuft.

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #5 am: 11.04.14 - 11:24:14 »
Ich hab das Skript ja genau deshalb entwickelt, weil unsere User, wenn Sie von einem internationalen Standort zurückkommen, regelmässig vergessen, wieder auf den lokalen Server zurück zu wechseln Driri  ;)

Die Frontend-DB aus dem PostOpen zu ziehen fiel mir gestern auch noch ein Tode - aber auch das hat bei mir nicht funktioniert. Jetzt hab ich nach dem Source.Close() ein Sleep 1 eingebaut und siehe da...

Danke für Eure Tipps!
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #6 am: 11.04.14 - 11:37:28 »
Korrigiere mich: es war nicht das Sleep (das hat keine Auswirkung), sondern ein Print "blabala...", das ich noch eingefügt hatte. Strange.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #7 am: 11.04.14 - 17:22:32 »
Ich habe da mal eine Frage am Rande: Wie ermittelst Du denn, ob jemand gewollt an einem anderen Standort arbeitet oder dort, wo sein Home Server ist?
Wenn die User für andere Standorte eigene AUs haben, dann ist dort doch entweder eine Replik der eigenen Mail-Db am Standort eingetragen oder dieser Eintrag zeigt immer "nach Hause". Wie ermittelst Du, wo der User den nun real ist?

Bernhard

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #8 am: 11.04.14 - 17:44:25 »
Hi Bernd,

an den internationalen Standorten gibt es unterschiedliche Mailserver für die User.

Wenn jemand einen Application-Server nutzt, der nicht dazu passt, mache ich beim Start eine Abfrage in der Art "Sie sind für den Mail-Server XY registriert, nutzen aber den App-Server AB in Honululu - falls Sie sich nicht im Netzwerk Honululu befinden, kann dies zu erheblich verlängerten Reaktionszeiten der Anwendung führen. Wollen Sie jetzt auf einen passenden Server wechseln?"

Im Moment bastele ich daran, die Prüfung nicht auf den Mailserver zu beziehen, sondern auf die unterschiedlichen IP-Adressräume der Clients an den Standorten, dann kann ich mir die Abfrage sparen.

(Ich habe für die IP-Ermittlung einen Würgaround gefunden, der das über shellexecute... ipconfig... in eine Textdatei schreibt und daraus den Wert holt. Das gefällt mir aber nicht. Per API hab ichs noch nicht im Griff. Es gibt zwar einiges im Netz für VB(A), aber Lotusscript mosert noch.)
« Letzte Änderung: 11.04.14 - 17:48:09 von jo@chim »
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #9 am: 11.04.14 - 19:23:33 »
Gute Idee mit den IP-Ranges.
Such mal hier im Forum nach "IP Adresse". Man wird ja hier zu fast allem fünfig ;-)
Einfache Lösung:
http://atnotes.de/index.php/topic,30952.msg195176.html#msg195176

Hier aber bitte beachten: Du musst da Dein ErrorHandling für die Übernahme der theoretisch möglichen IP Adresses kurzfristig mit "On Error Resume Next" aushebeln (hässlich, aber nicht zu ändern), denn in der Regel hat ja jede BOX IP-Adapter konfiguriert, die gerade inaktiv sind. Dadurch bekommst Du in der Liste der ausgelesenen "Adressen" auch ERROR-Werte in LS zurück, die Deinen Code sonst gnadenlos auf die Bretter schicken.
Bei mehreren Treffern (bei mir sind es gerade zwei: Verbindung im eigenen Home-Office-Netz und via VPN zur Firma) musst Du natürlich mit Deiner Intelligenz den sinnvollen Wert herausfiltern (aber Du hast ja eh Ranges, die für die Standortbestimmung in Frage kommen).

HTH,
Bernhard

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #10 am: 11.04.14 - 23:48:03 »
Meine Idee ist, für die verschiedenen IP-Adressräume der Netzwerke Konfigurationsdokumente mit dem Verweis auf die jeweils passenden Appserveradressen zu erstellen. Die kann ich dann im Script aus den Client-IP's (die per DCHP vergeben werden) über ein Lookup holen.

(Danke für den Tipp! Werde ich mir morgen ansehen, wenn ich zuende gebloggt habe)
« Letzte Änderung: 11.04.14 - 23:50:49 von jo@chim »
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Frontend DB schliessen, andere Replik öffnen
« Antwort #11 am: 11.04.14 - 23:54:14 »
Für alles, was nicht gefunden wird, gibts dann die Abfrage "Honululu..."
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz