Prüfung ob Datei auf Fileserver vorhanden ist

  • Hi,


    ich habe eine Datenbank erstellt von der aus man unter anderem über einen Button ein dem Dokument zugehöriges .pdf Dokument öffnen kann.


    Soweit funktioniert das auch wunderbar, jedoch sind nicht immer die zum Dokument zugehörigen .pdfs unmittelbar vorhanden. Daher möchte ich in dem Dokument eine Prüfung haben, die mir, wenn ich es öffne und aktualisiere, sagt ob die zugehörige .pdf bereits vorhanden ist.


    Ich habe bereits ausgiebig die Hilfe und das Internet durchsucht, jedoch keine passende Antwort oder einen Hinweis gefunden. Daher hoffe ich auf einen guten Rat von Euch.


    LG

  • Hallo taurec,


    erstmal ein herzliches Dankeschön für die schnelle Antwort!


    Ich habe zwar Eingangs geschrieben, dass ich die Information erhalten, wenn ich ein Dokument öffene und dieses aktualisiere. Woran ich dabei gedacht habe ist jedoch, dass ich alle über @Command( [ToolsRefreshAllDocs] ) aktualisiere, da die Anzahl der Dokumente ansonsten zu groß ist. Da ich das .pdf ja über einen Button öffne, erhalte ich in dem Moment ja keine Fehlermeldung...


    Sorry! Unklar ausgedrückt!

  • Mit der LotusScript-Fuinktion Dir() kannst Du prüfen, ob eine Datei vorhanden ist.
    Je nach Bedarf kannst Du die Prüfung ins QueryOpen oder in die Schaltfläche einbauen.

  • Hi,


    mit dem LS bekomme ich nun leider Schwiriegkeiten, da ich damit noch nicht gearbeitet habe...


    Dennoch habe ich die Hilfe durchsucht und mich im Forum belesen. In die Queryopen der Maske habe ich nun folgendes Script geschrieben (bitte nicht gleich verspotten! ;-)

    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)


    Dim s As New NotesSession
    Dim db As NotesDatabase
    Set db = s.CurrentDatabase
    fileName = LinkVar
    If Dir$(fileName$, 0)="" Then
    Ping = "fehlt"
    Else
    Ping = "vorhanden"
    End If


    End Sub


    Nun stelle ich folgende Probleme fest:


    1) fileName möchte ich den Wert des Feldes LinkVar übergeben, in dem der Pfad zum file steht


    2) Im fehlt Ping möchte ich ausgeben lassen, ob das file vorhanden ist oder nicht.


    Könnt Ihr mir einen Hinweis darauf geben, wie ich im LS mit Feldnamen arbeiten kann? oder bin ich ganz auf dem Holzweg?



    LG

  • Kleine Anregung.




    Andreas

  • Ok, das geht ja doch verhältnismäßig einfach. Um in das Feld zu schreiben habe ich nun folgende Zeilen geschrieben:


    fileName = Source.FieldGetText("LinkVar")
    If Dir$(fileName, 0)= "" Then
    Call source.FieldSetText ( "Ping", "fehlt" )
    Else
    Call source.FieldSetText ( "Ping", "vorhanden" )
    End If

    Die FieldSetText method
    habe ich aus der HIlfe herausbekommen und denke, dass diese rcihtig ist und kann die Maske auch ohne Fehler speichern. Wenn ich nun ein Dokument aus der Ansicht öffnen möchte, erhalte ich jedoch die Fehlermeldung "Property of Methode is not available during QueryOpen: FieldGetText".

    Gibt es Feldeinstellungen, die ich beachten muss oder funktioniert das Ganze nur im Edit-Mode?

  • Fieldsettext geht nur in edit mode.


    Source.document.ping="fehlt" würde gehen. Das dokument wäre dann allerdings nicht gespeichert, und das feld könnte damit jedesmal neu berechnet werden.

  • Versuch das ganze mal im PostOpen-Event


    Jedoch gilt auch hier, FieldSetText funktioniert nur, wenn sich das Dokument im Edit-Modus befindet.


    Im PostOpen koennte folgendes funktionieren, sofern es sich nicht um ein neues Dokument handelt.


    Code
    1. If Dir$(Source.Document.GetItemValue("LinkVar")(0), 0) = "" Then
    2. Call Source.Document.ReplaceItemValue("LinkVar", "fehlt")
    3. Else
    4. Call Source.Document.ReplaceItemValue("LinkVar", "vorhanden")
    5. End If



    Andreas

  • ...mühsam ernährt sich das Eichhörnchen! ;-)


    Ich habe von ascabg die Ausgabe per Messagebox aufgenommen und das funktioniert! ;-D


    Jedoch bekomme ich in mein Feld "Ping" nicht den Wert für vorhanden oder fehlt gespeichert. Ich habe nun folgendes unter Postopen stehen:


    Sub Postopen(Source As Notesuidocument)


    Dim s As New NotesSession
    Dim db As NotesDatabase
    Set db = s.CurrentDatabase
    fileName = Source.FieldGetText("LinkVar")
    If Dir$(fileName, 0)= "" Then
    Call Source.Document.ReplaceItemValue("Ping", "fehlt")
    Else
    Call Source.Document.ReplaceItemValue("Ping", "vorhanden")
    End If


    End Sub


    Wird mir nun der Wert einfach nicht an das Feld übergeben? Sind Feldeinstellungen vielleicht verkehrt, sprich gibt es da etwas worauf ich achten und vielleicht nicht dran gedacht habe?

  • Sorry.
    Ich habe mich meine meinem letzten Post etwas verschrieben.


    Der Code muesste nicht in den PostOpen-Event, sondern in den QueryOpen-Event.


    Jedoch stellt sich mir gerade noch die Frage, wie sind die Felder denn eingestellt.
    (editierbar, berechnet, berechnet beim Anlegen, ...)



    Andreas