Aus Navigation Datenbank öffnen

  • Hallo Zusammen!
    Ich habe ein Problem und hoffe, es kann mir irgendjemand helfen!


    Ich programmiere gerade an einem Management System welches Adressen und andere Dinge verwaltet. Aus diversen Gründen habe ich mich entschieden, für jede Sparte eine eigene DB zu erstellen.


    Als Navigationsplatform arbeite ich an einer "Management Zentrale" Datenbank!


    Wie kann ich es nun anstellen, dass aus dieser Management Zentrale (also aus der Navigation) die einzelnen Module (die verschidenen DBs ) geöffnet werden können?


    Wenn möglich sollte das Konfigurierbar und Serverunabängig laufen. Also ich stelle mir das per hinterlegtem Servername / Datenbankpfad vor!


    Hat jemand eine Idee wie man das machen könnte?


    Gruss
    Yves

    • Offizieller Beitrag

    Du könntest die DB mit NotesDatabase.OpenWithFailover(...) im BackEnd öffnen. Danach den Servername und Pfad ermittelen und mit NotesUIWorkSpace.OpenDatabase(...) die DB im Frontend öffnen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • :) Tönt nach Lotus Script!


    Leider bin ich mit Lotus Script noch nicht sooo vertraut! Bin es gerade am lernen! Könntest du mir eventuell das Script etwas genauer präsentieren?

    • Offizieller Beitrag

    Ja ist Script


    Beispiel:

    Code
    On Error resume Next
    dim ws as New NotesUIWorkSpace
    Dim db As New NotesDatabase( "", "" )
    Call db.OpenWithFailover( "MailServer", "Pfad\\DBNAme.nsf" )
    If err Then 
      Msgbox "DB konnte nicht geöffnet werden"
      Exit Sub
    End If
    On Error Goto 0
    Call ws.OpenDatabase( db.Server, db.FilePath, "Ansicht")


    - "On Error Resume Next" ... wenn Fehler einfach in nächster Zeile weitermachen
    - mit "Call db.OpenWithFailover.." wird die DB im BackEnd geöffnet
    - die If-Abfrage ist wichtig, falls die DB auf keinem Server geöffnet werden konnte
    - "On Error Goto 0" ... Fehlerbehandlung ausschalten
    - "Call ws.OpenDatabase..." DB im FrontEnd öffnen


    Die "Ansicht" ind er letzten Zeile kannst Du weglassen, falls Du nur die DB öffnen willst.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • OK, ich habe es nun etwas anders gelöst, es geht auch einfacher :)


    Danke aber trotzdem für deinen Lösungsvorschlag!


    Gruss
    Yves



    Meine Lösung:

  • Du machst in deine Datenbank ein Profildokument, in dem du den bevorzugten Server und die Replik-IDs der einzelnen Datenbanken aufnimmst (vielleicht auch, in welcher Ansicht oder mit welchem Navigator sich diese öffnen sollen).


    In den Navigatorschaltflächen wählst du dann aus mit


    Syntax
    @Command([FileOpenDBRepID] ; replicaID ; serverHint ; ansicht ; schlüssel ; neueInstanz ; temporär )
    oder:
    @Command( [FileOpenDBRepID] ; replicaID ; serverHint ; navigator ; solo; neueInstanze ; temporär )


    Der große Vorteil dieser Methode ist, daß dein Navigator auch bei den Notebookbenutzern unterwegs noch funktioniert, wenn sie lokale Repliken haben.


    Merke: die gute, alte Formelsprache ist dreimal so kurz und fünfmal so schnell wie Lotus Script. Und sie ist auch viel robuster gegen irgendwelche Fehler.


    Ich kann dir allerdings schon heute einen Fehler vorhersagen, auf den du eines Tages stoßen wirst. Der Tag wird kommen, an dem jemand, der gar keine lokalen Repliken hat, sich einen Desktop eines Notebook-Kollegen kopiert und weiterverwendet. Wenn der dann nicht an den Hint-Server kommt, bekommt der eine Fehlermeldung, weil der Befehl im Desktop sehr alte Stubs der Repliken als lokale Repliken findet und die dann öffnen will und - verständlicherweise - nicht öffnen kann.

  • Danke für den Tipp! Naja wieso auch einfach, wenn es kompliziert geht! Nun ja, das LotusScript funktioniert auf jedenfall auch ;)


    Ich habe es nun so gelöst, dass ich im DB_Setup Dokument die ReplicaID der Datenbanken hinterlegt habe.


    Folgende Formel habe ich für die Schaltflächen verwendet:

    Code
    DBReplicaID:=@GetProfileField("(DB_Setup)";"txt_ReplicaID_HelpDesk");
    @Command([FileOpenDBRepID];DBReplicaID);