Werte für eine Ansicht aus einer anderen Datenbank auslesen?

  • Um Dokumente aus der DB auf deinem Client, die du geändert oder neu erstellt hast, in die DB, auf die du über deine CMS zugreifst, zu kopieren kannst du dir einen Agenten erstellen:
    (z.B.: Bedingung->"Wenn Dokumente erstellt oder geändert wurden" ; Aktion=Einfache Aktion->"In Datenbank kopieren")
    Dann mußt du aber auch eine Ansicht in der "Web-DB" haben bzw. erstellen, die dir dir Dok's anzeigt. D.h. du mußt auch eine Maske haben, die den gleichen Namen hat, wie die Maske der org. Doks.
    Zwangsläufig wirst du dabei aber vermutlich bei geänderten Doks in deiner "WebDB" doppelte / veraltete Dokumente haben...

  • Zitat


    Elfriede schrieb:
    Wie bekomme ich doppelt angelegten Einträge weg???


    Ich gehe mal davon aus, dass du das nicht manuell ausführen willst...
    Das beste währe wohl gleich beim anlegen zu prüfen ob denn schon ein solches Dokument existiert und falls ja dann das alte löschen und das neue kopieren / anlegen lassen.
    Du kannst auch einen periodischen Agenten aufsetzen, der nach doppelten Dokumenten sucht und das ältere löscht oder ins "Archiv" verschiebt.

  • Ich habe den Agenten (kopieren) mittels einer Aktion hineingebaut. Das heißt leider auch, dass ich den Code nicht sehen kann und gegebenenfalls dort noch einige Änderungen vornehmen kann.


    Kann mir jemand einen kleinen Tipp geben, wie ich den Agenten in Lotus Script gestalten muss?

  • Sind in Script folgende Schritte:


    - Dokumente als Collection(Suche) oder über einen View holen, die kopiert werden sollen
    - Dokumente mit Methode CopyToDatabase kopieren


    Mehr ist es eigentlich nicht.


    Vor dem Schritt des eigentlichen Kopierens kannst du dann ja abprüfen ob das Dok schon vorhanden ist

  • Ich habe jetzt einen Agenten der mittels Script ausgeführt wird. aber irgendwo steckt noch ein Fehler. Es kommt die Meldung "Zieldatenbank" has not opened yet. Naja und dadurch wird dann das Script auch irgendwie nicht ausgeführt. Kann mir jemand nochmal einen Tipp geben?

  • hier der Quellcode


    Dim Session As NotesSession
    Dim quelldb As New NotesDatabase( "server/org", "quelldb.nsf" )
    Dim zieldb As New NotesDatabase ("server/org", zieldb.nsf)


    If Not zieldb.IsOpen Then
    Call zieldb.Open( "", "" )
    End If


    Dim quellview As NotesView
    Dim zielview As NotesView


    Dim quelldoc As NotesDocument
    Dim zieldoc As NotesDocument
    Dim zieldoctmp As NotesDocument


    Set quellview = quelldb.GetView("quellansicht")
    Set zielview = zieldb.GetView("zielansicht")


    Set zieldoc = zielview.GetFirstDocument


    While Not(zieldoc Is Nothing)
    Set zieldoctmp = zielview.GetNextDocument(zieldoc)
    Call zieldoc.Remove(True)
    Set zieldoc = zieldoctmp
    Wend


    Set quelldoc = quellview.GetFirstDocument


    While Not(quelldoc Is Nothing)
    Call quelldoc.CopyToDatabase(zieldb)
    Set quelldoc = quellView.GetNextDocument(quelldoc)
    Wend


    End Sub

  • Zitat


    Elfriede schrieb:
    nein, daran liegt es nicht, ich habs schon korrigiert


    Hast du den Pfad der Zieldb korrekt eingetragen?
    Wenn du die Zieldb nicht im "Data" Verzeichnis des Servers liegen hast, dann mußt du die DB mit Pfad (ausgehend vom Data-Verz.) übergeben:


    "Pfad\\Zieldb.nsf"


    Du kannst auch den Debugger einschalten und schauen, ob den die Zieldb im Programmlauf angesprochen wird.

  • 1. Wann läßt du denn den Agent laufen? Nach Erstellung neuer Doks/ Änderung alter Doks oder mit Zeitsteuerung?
    2. Kopiert der Agent nur nicht, oder löscht er auch nichts in der ZielDB?