Beiträge von Leon

    Hallo Diali,


    vielen Dank für die guten Tipps.
    Im DXL Stream steht die Info leider nicht drin - die wird sicherlich an der Datei selbst hängen ebenso wie bspw. das Erstellungsdatum etc. - Dateiattribute eben.


    Aber mit der LastModified Eigenschaft kann ich was anfangen. Werde es der einfachkeit halber in der Auswertung auf das Datum beschränken.
    Es hat zwar nichts mit dem DateLastModified der Datei selbst zu tun, aber für mein Vorhaben reicht das LastModified des Items aus.


    Nochmal vielen lieben Dank !


    MfG


    Leon

    Hallo zusammen,


    wenn ich einen Dateianhang in einer Mail referenziere über die Klasse NotesEmbeddedObject, so kann ich zwar über die Eigenschaft Source den Namen der Datei und über FileSize die Größe selbiger in Erfahrung bringen, aber leider nicht das letzte Änderungsdatum der Datei.


    Über die COM Klasse Scripting.FileSystemObject gibt es die Eigenschaft DateLastModified. So wie ich das bis jetzt sehe, muss ich um dies anwenden zu können die Datei jedoch erst aus dem Dokument lösen (also im lokalen Dateisystem speichern) und dann die gelöste Datei über über die Klasse Scripting.FileSystemObject referenzieren.


    Kennt jemand eine Möglichkeit das letzte Änderungsdatum eines Dateianhangs herauszubekommen, ohne den Anhang dazu zwingend lösen zu müssen ?


    MfG


    Leon

    Hallo RockWilder,


    schade, dann werde ich die Aktion wohl doch zunächst wie in meinem letzten Post beschrieben immer anzeigen und damit leben, dass der User eine Fehlermeldung bekommt wenn es keine Druckmaske gibt.


    Langfristig werde ich dann wohl das Berechtigungssystem irgendwie bearbeiten müssen, damit solche temporären Systemfelder irgendwo / irgendwie geschrieben werden dürfen.


    ... daher der Status nun vorerst wieder erledigt.
    Danke für Eure Unterstützung !


    MfG


    Leon

    Hallo taurec,


    an die notes.ini habe ich auch schon mal gedacht. Aber wie Du ja schon sagst: Empfehlenswert ist es nicht wirklich.


    Ich habe auch schon probiert, mittels @IsError( @Command( [SwitchForm] ; printForm ) ) in der Hide-Form zu testen, ob die Druckmaske existiert... Aber SwitchForm ist leider in einer Hide-Formel nicht erlaubt.


    Ich lasse die Aktion nun einfach dauerhaft eingeblendet. Wenn die Druckmaske nicht existiert, erscheint halt eine (bzw. zwei) Fehlermeldungen. Unschön, aber geht wohl halt nicht anders.


    MfG


    Leon


    PS: Eine Idee ist habe ich doch noch: Ich versuche es einmal über ein Profildokument. Lotus Script könnte den Wert also in ein persönliches Profildokument des Benutzers schreiben und die Hide-Formel könnte auf dieses zugreifen und den Wert daraus ermitteln. Habe also den Status nochmal auf "offen" gesetzt und teste das mal aus...

    Hallo zusammen,


    nachdem ich nun mittels Lotus Script prüfen kann, ob eine (Teil-) Maske existiert, möchte ich anhand des Ergebnisses eine Aktion ein- bzw. ausblenden (also verstecken).


    Die Prüfung läuft in der PostOpen Methode der Maske. Das Ergebnis der Prüfung besagt, ob zu der aktuellen Maske eine Druckmaske existiert oder nicht.


    Existiert eine Druckmaske, so soll eine Aktion "Drucken" sichtbar sein, welche zur Druckmaske wechselt, druckt und wieder zur ursprünglichen Maske zurück wechselt.


    Die Aktion existiert bereits und funktioniert auch.
    Mein Problem ist jedoch: Wie soll ich aus der Hide-Formula der Aktion auf das Ergebnis der Lotus Script Funktion aus der PostOpen Methode zugreifen ?


    "In ein Feld schreiben" war meine erste Idee. Diese fällt jedoch leider aus folgenden Gründen flach:


    1. In ein Feld schreiben kann ich nur im Edit-Mode. Der Druck-Button soll jedoch auch im Read-Mode sichtbar sein, sofern eine Druckmaske existiert.


    2. Eben mal kurz in den Edit-Mode wechseln kann ich nicht, da der Benutzer ggf. kein Recht dazu hat, das Dokument zu editieren.


    Kann ich aus der Formel heraus evt. auf eine globale Lotus Script Variable, welche in der Maske definiert wird, zugreifen ? Oder habt Ihr noch eine andere Idee ?


    MfG


    Leon

    Hallo taurec,


    vielen Dank für die Antwort.
    Habe es nun mit einem Agenten gelöst, welcher in jedes Memo / Reply in einem (persönlichen) Ordner ein Listenfeld (InFolder) mit den Ordnernamen einfügt, in welchen es sich befindet. Dazu bedient sich der Agent einer neuen (versteckten) Ansicht, welche alle Memos / Replys in meiner Datenbank enthält. Dann habe ich mir noch eine Ansicht gebaut, welche mir alle Memos/ Replys anzeigt, welche dieses Feld nicht besitzen, folglich also in keinem Ordner organisiert sind.


    Hier der Code für den Agenten:



    MfG


    Leon

    Hallo zusammen,


    ich bin mir zwar sicher, dass diese Frage schonmal da gewesen sein wird, konnte jedoch dummerweise über die Suche nichts passendes finden.


    In der Ansicht "Gesendet" in meiner Mail-DB werden ja alle aus meiner Mail-DB gesendeten Dokumente angezeigt. Diese gesendeten Mails organisiere ich (genauso wie empfangene Mails) in Ordnern. Dummerweise bleibt eine Mail aber nach dem Verschieben in einen Ordner in der Ansicht "Gesendet" liegen - klar, ist ja auch eine Ansicht.


    Nun würde ich gerne eine Ansicht einfügen, welche mir alle gesendeten Dokumente anzeigt, welche noch in keinem Ordner organisiert sind.


    Ist sowas möglich ?


    MfG


    Leon

    Hallo taurec,


    um das Auslagern scheine ich nicht ganz herum zu kommen wie mir scheint. Das Problem besteht hauptsächlich darin, dass TMK1 sozusagen die "Layout-Teilmaske" ist und TMK2 eine aktivitätsspezifische Teilmaske, welche die Aufgaben der jeweiligen Aktivität enthält. Somit kann ich das Layout zentral über TMK1 steuern, unabhängig von den jeweiligen Aktivitäten.


    Die Aufgabenbeschreibung befindet sich schlüssigerweise auch in TMK2, zusammen mit den tatsächlichen Aufgaben.


    Ich könnte das Feld "txt_Aufgabe" aus TMK2 in eine eigene Teilmaske TMK3 verlagern und diese innerhalb von TMK1 ganz oben einbinden. Das würde funktionieren. Wäre halt nur etwas blöd, extra dafür eine weitere Teilmaske erstellen zu müssen.


    @ RockWilder:


    Das habe ich schon probiert - bringt nur leider nichts.


    MfG


    Leon

    Hallo zusammen,


    ich habe eine Teilmaske TMK1, in der sich oben ein berechnetes Feld "dsp_txt_Aufgabe" befindet. Das Feld ist "berechnet zur Anzeige" und hat als Wert txt_Aufgabe.
    Unter diesem Feld wird eine weitere, berechnete Teilmaske TMK2 eingebunden, in der sich das berechnete Feld "txt_Aufgabe" befindet. Dieses hat als Wert z.B. "Dies ist der Aufgabentext".


    Öffne ich nun die Teilmaske TMK1 (im Lesemodus), so ist das Feld "dsp_txt_Aufgabe" leer. Das Feld "txt_Aufgabe" ist selbstverständlich ordnungsgemäß gefüllt. Wechsel ich in den Bearbeitungsmodus, so wird auch das Feld "dsp_txtAufgabe" gefüllt - da nun ein Refresh stattfindet.


    Verschiebe ich das Feld "dsp_txt_Aufgabe" innerhalb der Teilmakse TMK1 unterhalb der zweiten berechneten Teilmaske TMK2, ist das Feld "dsp_txt_Aufgabe" auch im Lesemodus bereits gefüllt. Logisch, da nun das Feld "txt_Aufgabe" über dem Feld "dsp_txt_Aufgabe" steht und somit zuerst berechnet wird.


    Ich benötige das Feld "dsp_txt_Aufgabe" jedoch über der berechneten Teilmakse TMK2 und somit auch über dem Feld "txt_Aufgabe". D.h. ich suche einen Weg dem Feld "dsp_txt_Aufgabe" mitzuteilen, dass es mit der Berechnung auf das Feld "txt_Aufgabe" warten soll. Das Ganze soll vor allen Dingen auch im Lesemodus funktionieren.


    Die Option "Nach Validierung berechnen" habe ich schon getestet, hat aber leider nichts gebracht. Habt Ihr noch Ideen, wie ich das Problem lösen könnte ?


    Besten Dank im Voraus.


    MfG


    Leon

    @ taurec:


    Weil jedes davon unabhängig von den anderen angezeigt oder verborgen sein kann. Es handelt sich hier um eine dynamische Aufgabenliste. Jede Aufgabe hat ein eigenes Feld.


    Ich möchte am Ende in einer Messagebox ausgeben, welche Aufgaben noch zu erledigen sind. Die Schlüsselwortsynonyme bilden dabei den Aufgabentext.


    MfG


    Leon

    @ taurec:


    Ansich eine gute Idee, aber so weiß ich am Ende immer noch nicht, welches Schlüsselwortsynonym aus der Auswahlliste Feld1 am Ende tatsächlich hat. Letztendlich gibt es sagen wir mal sechs oder sieben Felder, jeweils vom Typ Kontrollkästchen. Jedes hat ein ein anderes Schlüsselwortsynonym. Nun sind am Ende zwei Kontrollkästchen nicht angehakt. Woher weiß ich nun, welches Schlüsselwortsynonym aus der Auswahlliste zu welchem Kontrllkästchen gehört ? Ich müsste eine Verbindung zwischen dem Namen des Kontrollkästchens und dem Schlüsselwortsynonym + dem Wert in die Auswahlliste schreiben.


    @ Diali:


    So bekomme ich den Wert des Feldes, vorausgesetzt, das Kontrollkästechen ist angehakt. Den brauche ich aber nicht, sondern das Schlüsselwortsynonym aus dem FrontEnd.


    MfG


    Leon

    Hallo zusammen,


    ich habe in einer Maske mehrere Felder, jeweils vom Typ "Kontrollkästchen" mit jeweils einem Wert und einem dazugehörigen Schlüsselwortsynonym. Beispielsweise Feld1 mit dem Wert "Aufgabe 1|Erledigt". Nun versuche ich mittels LotusScript auf das Schlüsselwortsynonym des Feldes zuzugreifen. Wenn das Kontrollkästchen angehakt ist, kann ich mittels


    Dim ws As New NotesUIWokspace
    ws.CurrentDocument.FieldGetText( "Feld1" )


    auf das Schlüsselwortsynonym zugreifen. Mein Problem jedoch ist, dass ich genau die Schlüsselwortsynonyme von den Feldern benötige, welche nicht angehakt sind. Da mir die Methode FieldGetText nur ausgibt, was im FrontEnd angezeigt wird, bekomme bei diesen Felden logischerweise einen leeren String zurückgegeben.


    Ich hatte mir schon überlegt, ich könnte die Felder ja einfach temporär selbst anhaken und sie dann auslesen. Diese Idee musste ich jedoch wieder verwerfen, denn dazu müsste ich


    * entweder im FrontEnd mittels FieldSetText das Schlüsselwortsynonym selber hinein schreiben - welches ich aber ja nicht kenne -
    * oder im BackEnd den entsprechenden Wert hineinschreiben - welchen ich jedoch ebensowenig kenne.


    Oder irre ich mich und es gibt noch einen anderen Weg ein Kontrollkästchen anzuhaken ohne den Wert oder das Schlüsselwortsynonym kennen zu müssen ? Dann wäre das wenigstens ein Lösungsansatz.


    Gibt es eine Möglichkeit, auf die Schlüsselwortsynonyme der nicht angehakten Felder zuzugreifen ?


    MfG


    Leon

    Wird eigentlich für jeden Java-Agenten eine separate Instanz der JVM aufgerufen, oder wird lediglich eine Instanz der JVM durch den Agent Manager erstellt, welche sich dann um alle folgenden Java-Agenten kümmert ?


    Wie gesagt stellen wir in der nächsten Zeit ohnehin auf eine aktuellere Version von Domino (und Notes) um. Ich hoffe, dass dort mein eigentliches Problem behoben sein wird.


    MfG


    Leon

    Ich habe ja auch nicht vor alle meine Agenten in Java zu entwicklen. Aber in diesem konkreten Fall schien mir Java die beste Wahl, zudem ich mit LotusScript selbst noch nicht wirklich über Erfahrung verfüge. Aber die möchte ich mir ja aneignen.


    MfG


    Leon

    Ein Agent kann entweder im Frontend oder im Background ausgeführt werden. Im Frontend hat man Zugriff auf UI-Objekte wie z.B. den Workspace des ausführenden Benutzers oder die aktuelle Arbeitsumgebung. Das hat man im Background nicht. Und ein Java-Agent kann (meines Wissens nach) ausschließlich im Background ausgeführt werden, während ein LotusScript-Agent im Frontend läuft.


    Deine pure Abneigung gegenüber Java ist mir ehrlich gesagt etwas unverständlich. Natürlich hast Du Recht indem Du sagst, dass durch die JVM immer Leistungseinbußen entstehen. Aber bist Du Dir sicher, dass der Performanceunterschied zwischen einem LotusScript-Agent und einem Java-Agent wirklich so gravierend ist, gerade bei den aktellen Domino Versionen ? Gerade durch den JIT-Kompiler haben moderne Java-Applicationen heute kaum noch Leistungseinbußen gegenüber hart kompilierten Applicationen.
    Lass mich hierzu noch etwas aus meiner "Bibel" zitieren:


    Zitat

    Diese Java-Klassen sind lediglich Wrapper-Klassen, die über „native“ Referenzen auf die maschinenspezifischen C++ Klassen von Notes und Domino zugreifen. Diese Bibliotheken sind übrigens dieselben, auf die LotusScript zugreift, d.h. letztendlich ist die Verwendung der Domino-Klassen nicht nur ähnlich zu der Verwendung in LotusScript – so haben fast alle LotusScript Klassen einen Repräsentanten in Java und beide haben in der Regel eine äquivalente Signatur –, sondern faktisch rufen beide denselben C++ Code auf.


    Quelle: www.domino-java.com



    Zitat

    Und bei uns ist es -Gott sei Dank- so, dass die Entwickler nicht einfach was zusammenklatschen können und gut ist.


    Wie meinst Du das ? Was meinst Du mit "zusammengeklatscht"?


    Und ich habe noch nie davon gehört, dass man einen Server aufrüsten musste, nur weil jemand auf die Idee kam darauf einen Java-Agenten oder sonst irgend eine Java-Anwendung ausführen zu wollten. Da lass und bitte mal auf dem Boden der Tatsachen bleiben.


    Ich denke bei Dir ist es einfach die Skepsis gegenüber Java und der Grundgedanke "never change a running system". Neuerungen müssen jedoch nicht immer schlecht sein.


    MfG


    Leon