Beiträge von dnotes

    Also, das erscheint mir doch ziemlich umfassend....das, was Dir noch fehlt. Kann man bestimmt hier nicht in ein paar Worte fassen.
    Hier gibt´s aber Freelancer, die wuerden bei Deiner Firma vorbei kommen, auch fuer Schulungen ( mich eingeschlossen)
    Denk mal drueber nach. Man kann bestimmt vieles im Selbststudium erreichen, aber hin und wieder ist es einfach leichter und zeitersparend, wenn amn ein paar Dinge anschaulich erklaert bekommt. ;)

    Also, ein wenig Nachhilfe.
    Du kannst Dir einen Weg merken. Was macht man zuerst? Man starte Note, dann oeffnet man eine Datenbank, geht in eine Ansicht und waehlt ein Dokument.
    InSript sieht das so aus.
    Session, database, view, document. (Hierarchie)
    Der Begriff source taucht dann schon in einer Maske z.B. auf. Da biste dann aber auch schon in einem Dokument und hast dann mit Source schon das Dokuemnten-objekt im Zugriff.
    Also, je nachdem, wo Du Dich befindest, gibt´s unterschiedliche Wege oder Abkuerzungen.
    Auf ein Feld zugreifen dann, wenn Du das Dokumenten - Objekt erzeugt hast.
    Enfachste Methode: Wert holen....doc.Feldname(0)
    Felder sind immer Arrays..ausgenommen RichText Felder. Deswegen, auch wenn nur ein WErt drin steht die (0).
    Bei Feldernmit einem $ am Anfang geht diese Schreibweise nicht. doc.$Ref leifert einen Fehler.
    Da muss man dann doc.getItemValue("$Ref") benutzen.
    Setzen von Feldwerten. einfachste Methode:
    doc.Feldname = "Wert"
    doc.Feldname(0) liefert hier auch einen Fehler
    Dafuer, um mehrere Werte zu uebergeben, muesste man ein Array erzeugen, belegen und dieses Array dem Feld zuweisen.
    Im Geoeffneten Dokuemnt gibt es dann noch Methoden wie Notesuidocument.fieldgettext und fieldsettext um Felder UIdoc zu belegen.


    Auf jeden Fall muss das Dokument, wenn ueber die Documenten-methoden veraendert, gespeichert werden.
    also, nach dem Setzen der Feldwerte immer ein doc.save true,true


    So, erstmal was zum probieren ;)
    *Sonderfaelle so gut wie nicht beachtet

    OnChange ist nur fuer JavaScript aktiv und somit auch nur im Web einsetzbar. (Die JavaScript - Moeglichkeiten des Notes - Client sind arg beschraenkt).
    @MailSend ist doch eine gute Wahl fuer deinen Fall..ebenso wie Notesdocuemnt.send.
    Das nur das ganze Dokument verschickt wird.....was auch sonst???
    Aber welches Dokument verschickt wird kannst Du festlegen. (Muss ja nicht das Uidocument sein)
    Problem waere nur..wie bekommt man raus, ob sich der Feldinhalt geaendert hat??
    Hierfuer kann man sich ein verborgenens Dokument erstellen - bei NichtRichtText - Feldern und beim Oeffnen des Doks den Feldinhalt des zu beobachten Feldes einlesen.
    Beim Speichern wird dann ueberprueft, ob die Feldinhalte noch identisch sind oder es Unterschiede gibt.

    Wenn es aus sicherheitstechnischen Gruenden nicht noetig ist, die Dokumente zu verbergen sondern lediglich der Optik o.aehnliches, dann koennte man den Button im Navigator, der den User in die Ansicht der in Erfassung stehenden Dokumente bringt, auch mit einer einfachen Formel "lahmlegen"
    z.B.
    @If (@IsNotMember("[KEYWORDS]";@UserRoles);
    @Return(@Prompt([OK];"STOP";"You are not authorized to use this funktion."));
    @Command([OpenNavigator];"Keywords";"0"));@All
    Hier habe ich einen eigenen Navigator - Keywords -, zu dem nur jemand Zugang hat, dem die Rolle KEYWORDS zugordnet wurde.
    Dann kann man sich den ganzen Schmus mit Leserfelder sparen.
    (Autorenfelder sollten aber dennoch sein)

    Das geht am einfachsten mit LS. Allerdings muss man dafuer in den Dokumenten ein Feld erzeugen, das den Feldinhalt von dem Datumsfeld formatiert.
    Also so in etwa:

    Code
    Dim ws As New notesuiworkspace
    	Dim uidoc As notesuidocument
    	Dim doc As notesdocument
    	Dim s As New notessession
    	Dim db As notesdatabase
    	Set db = s.currentdatabase
    	Set uidoc = ws.currentdocument
    	Set doc = uidoc. document
    	doc.neuesFeld = Format(doc.altesDatumsFeld(0),"ww")
                    doc.save true,true

    Die Zeilen zum Oeffnen der DB erscheinen mir unsinnig.
    Wenn ich ein Datenbankobjekt erzeuge und die Datenbank existiert, dann ist die DB open. (mit Dim dbSCC As New notesdatabase("BOEDOM1","ide\security\SecComCh.nsf")


    Wenn sie danach nicht open ist, wird auch ein db.open sie nicht oeffnen, soweit ich weiss.
    Man koennte hoechstens abbrechen, wenn db.isopen fasle liefern wuerde, damit keine Fehlermeldung bei
    Set viewSCC = dbSCC.getview("User\Host name")
    aufkommt.

    Ich hatte sowas mal mit einer dialogbox gemacht, um den Grund fuer - in diesem Fall - Ablehnung eingeben zu koennen.
    Das sieht dann etwa so aus:


    flag = ws.DialogBox("reason",True,True)
    In der Maske reason gibt es dann ein Feld mit Namen z.B. Reason ( ist aber nicht zwingend der Name)


    Set m_doc = db.createdocument
    abss = Evaluate({@name([cn];@username)})
    m_doc.SaveMessageOnSend = False
    Dim rtitem As notesrichtextitem
    Set rtitem = New NotesRichTextItem( m_Doc, "Body" )
    m_doc.subject = abss(0) & " has denied the " & doc.strategy_kind(0) & " strategy " & |"| & doc.strategy(0) & |"|
    recipient = doc.responsible(0)
    Call rtitem.appendtext(doc.reas(0))
    Call rtitem.addnewline(2)
    m = "der Empfaenger
    m_doc.send False,m



    So, nun musste nur noch die Maske Reason oder wie auch immer erstellen, ein Feld in eine Tabelle einfuegen und etwas abaendern