Beiträge von ibnfad

    Zitat


    Unter der Hilfe links neben dem Code hast du sie doch auch im Designer zur Verfügung


    Eben drum wäre es doch auch schön, wenn man die benutzen könnte. Also statt:


    Dim wApp as variant
    Dim wdoc as variant


    set wApp = CreateApplication("Word.Application")
    set wdoc = wApp.ActiveDocument


    lieber
    Dim wApp as Application
    Dim wdoc as Document


    und die Klassen sollten dann zur Verfügung stehen, sprich:


    Nach dem ich set wdoc = App. eingebe sollten die Methoden und Props der Application zur Verfügung stehen.
    Word kann das ja auch.

    Greets!


    In MSOffice-VB kann man wunderbar LotusScript programmieren, in dem die Lotus Objekte unter Verweise eingebunden werden. Methoden und Probs aller NotesKlassen stehen dann fein brav zur Verfügung.


    In Lotus Script kann ich zwar auch VB-Befehle eingeben, muß aber VB-Klassen wie Document oder Selection als Variant angeben, weil Notes selbige nicht kennt.


    Kennt jemand eine Möglichkeit, VB-Klassen in LotusScript einzubinden? Wäre schön, wenn man die zur Verfügung hätte und nicht beim Programmieren *im Blindflug* arbeiten muss.

    Hi,


    Hat jemand schon mal eine Ansicht gehabt, in der @Modified
    neben dem erwartetem Datum wie 24.10.2004 auch bei manchen
    Dokumenten 24.10.**** anzeigt?
    Hat jemand ne Ahnung, woran das liegen kann?
    Eigenschaften Dokument/Modified zeigt logischerweise den gleichen Schrott an.

    Moin,


    Du willst doch Teile eines Strings, nicht den ganzen String ersetzen.
    Soviel ich weiss, kannst Du mit Replace nur ganze Werte austauschen, was Du brauchst, ist eine Funktion, die @ReplaceSubstring simuliert:



    Function FReplaceSubstring(searchstring, cutstring, replacestring)

    While Instr(searchstring, cutstring)>0
    searchstring= Left(searchstring, Instr(searchstring, cutstring)-1) + replacestring + Right(searchstring, Len(searchstring)- Instr(searchstring, cutstring)-Len(cutstring)+1)

    Wend

    FReplaceSubstring=searchstring
    End Function


    TEST = FReplaceSubstring(doc.Body(0), Chr(13), "/")


    So denn Body nicht gerade ein Richtextfeld ist, sollte das so funktionieren.

    Hallo,


    Schade, bei mir verhält sich das leider nicht so, wie von Dir beschrieben.


    Ich werde wohl den Hacken "öffentliche Dokumente schreiben" setzen und ins Queryopen und Querymodechange aller Masken (bis auf die Dialogmaske, die im Bearbeitenmodus geöffnet werden soll) auf ACL-Berechtigung = Leser prüfen und dann den Bearbeitenmodus unterdrücken.


    Trotzdem Danke für Deine Antworten.

    Hi,


    Leider ist das nicht, was ich brauche, in ähnlicher Form funktioniert
    ja die zuweisung auch.
    Allerdings führt in Deinem Beispiel
    Liste("abc") = "wert1"
    zum Fehler "Variant does not contain a container". Muß schon als
    Dim Liste LIST as variant deklariert werden.


    Was ich brauche ist, dass "abc" mehrere Werte haben kann.
    Liste sollte also so aussehen:


    Liste("abc")(0) = "wert1"
    Liste("abc")(1) = "wert2"
    Liste("def")(0) = "wert3"


    (siehe mein Beispiel).
    Ja, und die Zuweisung von einer solchen als
    Dim Liste LIST as variant Variablen an eine variable vom Typ
    variant bekomme ich nicht hin. Da kommt dann der Fehler
    "Type Missmatch".


    So langsam regt sich bei mir der Verdacht, dass eine Unterfunktion die von mir angegeb. beispielvariable nicht an die
    aufrufende Funktion zurückliefern kann?!

    Zitat


    Variant kann so ziemlich alles sein.
    Wenn du in der Funktion die Variable die du zurückgibst als List
    definierst, dann ist der Rückgabewert bei Definition als Variant
    ebenfalls eine List


    Stimmt schon. Nur wie gesagt:
    Die Zuweisung Type Variant = Type List as variant
    führt zur Fehlermeldung "Type Missmatch".


    List as variant kann man einer Function als Rückgabewert nicht zuweisen, und Dim Werte as variant funktioniert auch nicht.
    Irgendwo muss da ein Fehler drin stecken oder kann man
    per Script keinen List Array zurückgeben?

    Hi,


    Hat jemand eine Idee, wie man an die aufrufende Funktion
    'ne Variable vom Type List as variant zurückliefern kann?


    Klar, geht auch anderes, wäre aber schön, wenn ich den "List as variant" in 'ner Funktion (--> wird an mehreren Stellen verwendet)
    berechnen kann.


    Mein Anwendungsbeispiel:


    Im Postopen die Werte von bestimmten Feldern merken und
    im Querysave prüfen, ob sich da Werte geändert haben.


    Die Function sieht ungefähr so aus:


    Function set_lstfield(doc as NotesDocument) as variant
    Dim item as Notesitem
    Dim Werte List as Variant
    Dim feldnamen(20) as string


    feldnamen(0) = "feldnamex"
    feldnamen(1) = "feldnamey"
    feldnamen(2) = "feldnamez"


    Forall itemname in feldname
    if not itemname = "" then
    set item = doc.GetFirstitem(itemname)
    If not item is nothing then
    'alle werte in die Liste schreiben
    werte(itemname) = item.values
    else
    ' Feld kommt nicht vor!!
    end if
    end if
    End forall



    set_lstfield = werte
    End Function



    werte sieht ungefähr so aus
    -werte
    - felnamex
    (0) ["feldwertx"]
    - felnamey
    (0) ["erster Wert feldwerty"]
    (1) ["zweiter Wert feldwerty"]
    - felnamez
    (0) ["feldwertz"]





    Ja, und set_lstfield = werte geht natürlich wegen nem TypeMismatsch nicht....


    P.S.:
    Wie bekommt man den Code ordentlich eingerückt hin?
    blanks werden offensichlich hier im Forum rausgetrimmt.

    Bei mir hat das hier funktioniert, dürfte das gleiche sein wie bei dnotes:


    Dim s As New NotesSession

    Set coll_del = source.Documents

    If coll_del.count > 0 Then
    Set doc_del = coll_del.GetFirstDocument
    Do While Not doc_del Is Nothing
    If doc_del.DokumentAutor(0) <> s.Username Then
    Messagebox("Sie dürfen nicht löschen!")
    Continue = False
    Exit Sub
    End If
    Set doc_del = coll_del.GetNextDocument(doc_del)
    Loop
    End If


    Allerdings kann es auch nicht schaden, die anderen Variablen zu deklarieren.

    Ich habe alle Kombinationen durchprobiert, die mir so eingefallen sind:


    Diverse datenbanken


    Leser über Gruppe in ACL
    Leser über NotesNamen in ACL


    Nur die Dialogbox mit Hacken "Available to Public Access users"
    Zusätzlich einen andere Maske mit dem Hacken...


    Alles Wurst. Leser können in meinen DBs immer alle Dokumente
    (alle Masken) im Editiermodus öffnen.


    Wie hast Du denn hinbekommen, dass nur die suchmaske editiert werden kann?

    Hallo,


    Erst mal Hilfe zur Selbsthilfe:


    Debuggen funktioniert manchmal nicht.


    Mit nem:


    On error goto bla


    und ganz unten dann


    exit sub
    bla:
    msgbox "Fehler " & Error$(err) & " in Zeile " & erl
    exit sub



    findest Du zumindest immer raus, in welcher Zeile der Fehler auftritt.


    Nun zu dem Fehler:
    Ich hatte Dir nur nen Auszug angegeben.


    Du musst noch die Session und db deklarieren und initalisieren.


    Also oben folgendes einfügen:


    Dim s as NotesSession
    Dim db as NotesDatabase


    set s = New NotesSession
    set db = s.CurrentDatabase


    Grüße
    Michael

    Hallo,


    Erst mal Hilfe zur Selbsthilfe:


    Debuggen funktioniert manchmal nicht.


    Mit nem:


    On error goto bla


    und ganz unten dann


    exit sub
    bla:
    msgbox "Fehler " & Error$(err) & " in Zeile " & erl
    exit sub



    findest Du zumindest immer raus, in welcher Zeile der Fehler auftritt.


    Nun zu dem Fehler:
    Ich hatte Dir nur nen Auszug angegeben.


    Du musst noch die Session und db deklarieren und initalisieren.


    Also oben folgendes einfügen:


    Dim s as NotesSession
    Dim db as NotesDatabase


    set s = New NotesSession
    set db = s.CurrentDatabase


    Grüße
    Michael

    Hallo Olli,


    Ich fürchte, mit der ACL kommst Du da nicht weiter.
    Da kannst Du nur per Hacken einstellen,
    ob jemand überhaupt das Recht hat, Dokumente zu löschen
    Grundeinstellung ACL für alle Personen sollte Editor sein.


    Was Du brauchst, ist ein Feld, in dem Du Dir den Autoren merkst.
    Z.B. ein berechnet beim Anlegen Namensfeld "DokumentAutor".


    Dann kannst Du im Querydokumentdelete/Datenbankscript abzufragen, ob der Benutzer (session.UserName) gleich dem
    Autor Ist. Also ungefähr so wie unten beschrieben.
    Gehört IMHO eher in den Bereich Design als Admin.


    Set coll_del = db.UnprocessedDocuments
    If coll_del.count > 0 then
    Set doc_del = coll_del.GetFirstDocument
    Do while not doc_del is nothing
    If doc_del.DokumentAutor(0) <> s.Username then
    Msgbox "Eins oder mehrere der markierten Dokumente
    dürfen Sie nicht löschen"
    continue = false
    exit sub
    end if
    Set doc_del = coll_del.GetNextDocument(doc_del)
    Loop


    end if

    Zitat


    Vielen Dank für Eure Antworten...


    Och, ist ja ein geben und nehmen.


    Zitat


    Kennt Ihr vielleicht eine Andere Möglichkeit?


    1. -Eine Dokument Collection erstellen mit der Auswahlformel,
    die sich in der Function isMember verbirgt.
    -Die Collection in einen (neu zu erstellenenden) Ornder packen
    -alle Dokumente im Ordner ausdrucken
    -Ordner wieder löschen.


    2. - Eine view verwenden, deren SelectionFormula derart
    anpassen, dass nur die zu druckenden Dokumente angezeigt
    werden.
    - In die view wechseln
    - ausdrucken
    - wieder in die alte View wechseln


    Die 2. Version finde ich eleganter; allerdings kann ich Dir im Augenblick keine Einzelheiten wie Code oder so liefern;
    habe gerade kein passendes Beispiel parat.

    deluxer


    Mag ja sein, dass ich da voreingenommen bin, aber:


    Abschnitte mit Zugriffskontrolllisten haben schon unter Notes 4.5
    nicht sauber funktioniert. Habe da immer die Finger von gelassen
    und nach anderen Möglichkeiten gesucht.
    So sich denn in den letzten Versionen kein Wunder getan hat:


    Versuch's doch mal stumpf mit 'ner Verbergenformel wie es DaMike vorgeschlagen hat.
    Hide
    @IsNotMember("[Administrator]"; @UserRoles)
    sollte funktionieren.

    Zitat


    Über die Maskeneigenschaft "Verfügbar für Benutzer mit öffentlichem Zugriff" kannst Du regeln welcher User welche Maske im Edit-Mode öffnen darf. Hat eine Maske diese Eigenschaft nicht, kannst Du die Maske auch nicht im EditMode öffnen.


    Soweit die Theorie.
    In der Praxis macht sich der Hacken in der Maske leider bei Leserrechten als Steuerelement überhaupt nicht bemerkbar.
    Leser laut aACL, die alle Dokumente im Editiermodus öffnen
    können, irritieren mich immer ein wenig. :-o


    Ich glaube, er ist auch hauptsächlich für NoAccess oder Depositor gedacht, damit die Jungs das Designelement Maske überhaupt sehen können.