Beiträge von LN4ever

    Und in LS heißt das sagenumwobene Funktiönchen CSTR


    CStr ( expr )
    expr
    Any numeric expression, date, or string expression that LotusScript can convert to a string.
    Return value
    CStr returns the value of expr as a String value.
    CStr(EMPTY) returns the empty string ("").

    Um ein Grundstudium der Hilfe zu den NotesDateTime-Klassen wirst du nicht herumkommen - aber danach klappt es auch mit dem ADJUST. Nur Eines schon jetzt: du mußt zweimal adjusten - einmal 23 Stunden, einmal 59 Minuten.


    Überleg dir genau, ob du in andere Zeitzonen gerätst. Wenn ja, empfiehlt sich in vielen Fällen eine Verschiebung, die nicht ganz so weit geht.

    Dim dbdir As New NotesDbDirectory("DEIN SERVER")
    Dim db As NotesDatabase
    Dim acl As NotesACL
    Dim entry As NotesACLEntry
    Set db = dbdir.GetFirstDatabase(DATABASE)
    While Not db Is Nothing
    ' .... Prüfen, ob Agentenunterzeichner/ausführer auch Managerrechte hat
    ...


    Set acl=db.ACL
    Set entry=acl.Getentry("-Default-")
    If Not entry Is Nothing
    Set Rollen=acl.Roles
    ForAll x In Rollen
    If entry.IsRoleEnabled(x) Then
    Call entry.DisableRole(x)
    End Forall
    Call acl.Save
    End If
    Set db=dbdir.GetNextDatabase
    End While


    Das ist es in etwa, was du brauchst. Das Ganze aus den Fingern geschrieben und ungetestet.


    Schau dir unbedingt die Eingrenzungsmöglichkeiten beim GETFIRSTDATABASE an. Beziehen sich deine Änderungen nur auf Datenbanken oder auch auf Templates ?


    Wie sieht es in Templates mit vordefinierten Einträgen ( das sind die in eckigen Klammern) aus ? Müssen die auch geändert werden ?


    Gruß


    Norbert

    Wenn du den Abschnittt mit in die Teilmaske aufnimmst und die HW-Formel nicht auf den Abschnitt, sondern zum Einziehen der Teilmaske als berechnete Teilmaske verwendest, kann dir das in manchen Fällen helfen.


    Du erkaufst dir das durch zwei sehr mißliche Dinge:
    1. Die Felder der nicht eingezogenen Teilmasken sind dann auch nicht im Zugriff. Bei Bedingungswechseln zur Laufzeit der Bearbeitung muß ein @COMMAND([VIEWSWITCHFORM]) herhalten, das Frontend/Backend manchmal durcheinanderbringen kann


    2. Du siehst deiner Maske nicht mehr an, was sie eigentlich darstellt. Dort steht ja nur noch überall
    <BERECHNETE TEILMASKE>
    <BERECHNETE TEILMASKE>
    <BERECHNETE TEILMASKE>
    <BERECHNETE TEILMASKE>
    <BERECHNETE TEILMASKE>
    <BERECHNETE TEILMASKE>


    Das macht Pflege und Wartung nicht einfacher.


    Und daher komme ich doch auf Taurec zurück. In den allerallerallermeisten Fällen entstehen die Leerzeilen durch falsch angelegte Abschnitte (wenn die letzte Zeile eines Abschnitts bei der Erstellung nicht eine Leerzeile ist, passiert es, daß Notes eine Leerzeile anhängt (in der de facto die Abschnitts-Info steckt).


    Bei Mail-Antwortkaskaden siehst du das sehr schön. Und wenn du jetzt hingehst, und diese Leerzeilen löschst, dann befindest du dich bei der nächsten Editierung am Abschnittsende eigentlich immer schon ganz dicht am RedPanicScreen.


    Wohl dem, der dann noch einen 4er Client installiert hat, mit dem man solchermaßen verhunzte Dokumente noch öffnen kann und alle Abschnitte entfernen kann. Mit allen höheren Clients stapelst du nur die Abstürze.


    Wenn das also der Fall ist, hilft nur Eines: Abschnitte entfernen und sauber wieder neu anlegen. Dann: letzte Zeile auf HW 1 stellen.


    Nicht vergessen: Am Ende der Gesamtmaske eine Leerzeile ohne HW einfügen, sonst kann man nicht mehr mehrere Dokumente zusammen weiterleiten.

    Ist auf diesem PC Notes zuvor abgestürzt und du hast keinen Reboot gemacht ? Meistens beißt er sich danach nur am Desktop fest (dann reicht im Normalfall eine Wiederanmeldung des Users am Rechner, weil dabei die Dateien geschlossen werden), aber die LCK -Dateien bzw. das Weiterlaufen von einigen Notes-Tasks lösen bei einem wiederholten Start die von dir beschriebene Fehlermeldung aus - und dann hilft nur ein Reboot des Rechners.

    Handelt es sich eigentlich um ein Cluster oder (nur) um zwei Server in einem "normalen" Replikationsverbund ?


    Wenn du das blind machst, hast du hinterher auch von den Datenbanken, die es auf jedem Server einmalig gibt (LOG.NSF, MAIL.BOX, Statistiken, Events) Repliken liegen - und ich verspreche dir: es wird dir schwerfallen, in diesen DBs noch zu erkennen, auf welchem Server welche Dokumente entstanden sind, wenn sich die DBs erst einmal zusammenrepliziert haben.


    Ich würde einmal in der Sandbox nach fertigen Lösungen suchen, denn mit dem dir eigenen Freiheitsverständnis (was Plan, Ahnung, Einarbeitung, Sicherung, Test und Vorsicht anbelangt) und dem geradezu umwerfenden Vertrauen auf eine dir immer hold gesonnene Fortune wirst du das Projekt sonst in den tiefsten Keller fahren.

    Zu Frage 1: $PublicAccess geht beim Erstellen eines neuen Dokuments definitiv nur durchs Frontend. Eine einfache Überlegung macht das auch bereits klar. Nehmen wir eine Anwendung mit Maske1.


    Maske1 ist nicht für PublicAccess freigegeben. Wenn die Konstruktion der Erzeugung eines Dokuments im Backend durch das einfache Setzen des Felds $PublicAccess auf "1" funktionieren würde, könnte jeder Leser, der öffentliche Dokumente schreiben kann, sich einen Agenten erstellen, mit dem er ein Dokument der MASKE1 erzeugt, indem er einfach dieses Feld einbaut. Das Backend weiß ja nichts von der Existenz von Masken und deren Restriktionen.


    Zu Frage 2: zu eigenen User-Profilen für Leser, die öffentliches Autorrecht haben, habe ich noch keine Lösung gefunden.


    Ein bereits erstelltes allgemeines Profil, das in $PublicAccess eine "1" hat, kann von Autoren öffentlicher Dokumente auf jeden Fall auch benutzt werden - und damit kann man kurzzeitige Werte zwischenspeichern - für jeden etwas Anderes, jeder cachet es sich ja und bemerkt die Verwendung des gleichen Basiselements durch andere Benutzer gar nicht. Damit kann man Cookies in manchen Webanwendungen ersetzen.

    Wo steckt das Problem ? Der Amerikaner hat bei seiner Eingabe für den 1.Juli ein Datumsformat 07/01/2006, der Deutsche ein 01.07.2006 - jeder bekommt bei einer anders formatierten Eingabe eine Fehlermeldung.


    Mein Vorgehen ist - spätestens nach DirkP s Tipp - daß ich das Datum Datum sein lasse und mir wirklich nur den Textstring des Eingabefeldes nehme und in das Suchfeldfenster einsetze.


    Der User führt die Volltextsuche jetzt in seinem Userkontext durch - und dieser Kontext kann den übertragenen String als Datum richtig interpretieren.


    Damit ist natürlich die Überlegung tot, einen Suchstring in Formelsprache zusammenzubauen und als Argument in einem FTSEARCH-Statement innerhalb eines Scripts einzubauen, denn darin brauche ich eine kanonische Form der Datumsrepräsentation - und mit der scheint es schwierig zu werden (Ronka).


    Obwohl: was liefert denn in LS ein Month(DateValue(uidoc.GetFieldText(Datumsfeld))) eigentlich zurück ? Wenn das in allen Datumsvarianten das richtige Ergebnis zurückliefert, wäre auch das möglich.

    Hier schweigt sich die Hilfe aus.


    Folgendes Problem: ich habe eine Anwendung, in die ich eine Volltextabfrage in einer Suchmaske integrieren will, indem der Anwender bestimmte Felder mit Suchinhalten versieht. Beim Schließen des Dokuments wird daraus ein QUERYSTRING zusammengebaut und auf das aktuell geöffnete Objekt (Datenbank oder View - je nachdem, von wo aus aufgerufen) ausgeführt, aus den Suchergebnissen ein Newsletter mit doclinks erstellt und an den Abfrager gesendet.


    Mit Textfeldern geht das wunderbar, aber was mache ich mit einem Datumsfeld ? Packe ich das mit einem uidoc.FieldGetText in seiner landessprachlichen Darstellungsform in den Querystring oder muß ich dies in eine normierte Form umwandeln ? Und wenn ja, wie ?

    Erster Punkt:
    Hast du die Grundregeln für Leserfelder auch mit eingebaut ?


    In der Datenbank wird eine Rolle vergeben, z.B. IMMERLESER


    In der Maske ist ein weiteres berechnetes Leserfeld eingebaut. Dieses Feld ist verborgen, steht UNTER dem Lesernamenfeld und hat eine Formel wie


    @If(langen_autor="" & $READERS="";"";"[IMMERLESER]")


    Server und Administratoren der DB erhalten die Rolle IMMERLESER. Sonst hast du die Dokumente das letzte Mal gesehen - und repliziert werden dieDokumente nicht zwischen den Servern, weil die Server selbst sie nicht "sehen" würden (sie tauchen dann auch nicht im Volltextindex auf usw.).


    Zweiter Punkt:
    In den bereits bestehenden Dokumenten werden die Textfelder mit ABBREVIATED-Namensformen erst mit einem Dirchrechnen mit der Maske in Leserfelder umgewandelt (unbedingt zuerst Punkt 1 abarbeiten !)


    Leserfelder werden intern IMMER kanonisch gespeichert, können aber in einer ABBREVIATED-Form angezeigt werden. Eine Darstellung als CN-Form zerstört dir hingegen die Leserfelder.

    Und wenn du jetzt noch einen Schritt weiter planst, kannst du dir mit einem


    Kategorie+
    @If(subkatekorie1="";"";"\\"+subkategorie1+
    @If(subkategorie2="";"";"\\"+subkategorie2))


    eine Ansicht erstellen, in der man ein Thema auf einer beliebigen Kategoriestufe platzieren kann. In deinem Beispiel also wahlweise etwas zum Thema Fußball oder zum Thema Fußball\Bundesliga oder zum Thema Fußball\Bundesliga\Aufsteiger
    schreiben kann und nicht immer die unsinnigen NICHT KATEGORISIERT-Spalten hat.

    Der sog. "Inhouse-Spammer" - irgendein DarfNixKosten-Tool, das im Fehlerfall mehr Probleme bereitet als es löst.


    Ich würde mir eher Gedanken machen, ein Überwachungstool mit mehr Intelligenz zu kaufen als zu versuchen, mit Regeln u.ä. die mangelnde Intelligenz auszugleichen.


    Es gibt zahllose Beispiele, in denen das Bedienungspersonal von Überwachungsanlagen unter der Last von immer mehr Fehlermeldungen bis zur Arbeitsunfähigkeit von der Fehlerbehebung abgehalten wurde - die Tschernobyl-Katastrophe ist das Bekannteste.


    Und das hat dazu geführt, daß gute Überwachungsanlagen an vielen Stellen von aktiver Meldung auf Anzeige umgestellt oder bei Vorhandensein weiterer Fehler auch vorübergehend abgestellt werden können, daß es Severity-gesteuerte Meldesysteme mit begrenzten und gestaffelten Fehlerausgaben gibt usw.


    Aber es ist klar: die gibt es nicht für umme.


    Ansonsten hilft es oft auch bereits, die Taktungen des Fehlerpollings heraufzusetzen.


    Es ist gut, wenn du morgens kommst und eine (oder vielleicht auch 5) Meldungen hast, daß ein bestimmter Task in der Nacht abgefallen ist. Im Abstand von 1 Minute zu überprüfen, ob der Notes-Port 1352 noch antwortet, ist hingegen ziemlich unsinnig. Das merken und melden deine Benutzer ohnehin im laufenden Betrieb.