Memo öffnen und Felder füllen

  • Hallo,


    möchte gerne dass von einer Maske die zwei Felder enthält z.B. Mail(Adresse des Mailempfängers) und Body(typ RichTextLite) ein neues Memo geöffnet wird, welches die ausgefüllte Mailadresse und das RichtextLite Feld enthält. Habe nun folgendes Script:



    Wie schaffe ich es nun das was im Feld Mail steht in das Feld "AN" des Memos zu kopieren? Der Teil welcher im Body steht wird bereits übernommen. Bin leider Neuling in LScript und kämpfe mit meinem Problem schon länger rum.


    Danke und lg

  • Hallo Maria,


    versuch mal das:


    nach set doc = ....
    dim mailinhalt as variant
    if doc.hasitem("Mail") then mailinhalt = doc.mail
    jetzt ist in der variable mailinhalt ein array mit allen Mailempfängern.
    Wenn Du weißt, daß es nur einer ist kannst Du auch direkt
    if doc.hasitem("Mail") then mailinhalt = doc.mail(0)
    benutzen, dann ist mailinhalt direkt ein string den Du dann mit
    CALL iudoc.fieldsettext("An", Mailinhalt)
    zuweisen kannst.


    Das war jetzt die kurzform.


    Beachte immer was Backend (in diesem Fall doc) und was Frontend (Userinterface, in diesem Fall uidoc) ist.


    bei weiteren Fragen: posten


    Gruß
    Bernd

  • Hallo Bernd,


    wenn ich

    Code
    if doc.hasitem("Mail") then mailinhalt = doc.mail(0)

    verwende, funktioniert alles prima, wenn ich aber

    Code
    if doc.hasitem("Mail") then mailinhalt = doc.mail

    verwende erscheint die Fehlermeldung: Incorrect Argument Type - String expected.
    Soviel ich verstehe, wohl da es sich um ein Array handelt. Wie kann ich deinen Code auch mit mehreren Mailempfängern benutzen?
    Danke Maria

  • Und was sagt er, wenn du folgenden Code verwendest ?


    Call uidoc.GotoField( "Body" )
    Call uidoc.SelectAll
    Call uidoc.Copy
    Set uidocNeu = workspace.ComposeDocument( "SERVER1", "mail\maria.nsf", "Memo" )
    Call uidocNeu.GotoField( "Body" )
    Call uidocNeu.Paste
    Call uidoc.GotoField( "Mail" )
    Call uidoc.SelectAll
    Call uidoc.Copy
    Call uidocNeu.GotoField( "SendTo" )
    Call uidocNeu.Paste

  • Danke jetzt hats geklappt. Ein Problem habe ich aber noch:
    1. Der Anhang wird im Memo ganz am Anfang eingefügt, danach kommt gliech die Beschreibung und dann die Signatur des Benutzers. Möchte gerne dass die Beschreibung im Body des Memos als erstes aufscheint, dann eine neue Zeile eingefügt wird der Anhang kommt, eine leere Zeile und schlussendlich die Signatur des Benuzters.
    Habe versucht eine leerzeile so einzufügen, aber klappt nicht
    Call uidocNeu.GotoField( "Body" + chr(10) + chr(13))



  • Langsam fängt mir LotusScript an zu gefallen :)
    Mit

    Code
    Call uidocNeu.InsertText(Chr(10) + Chr(13))

    hats hingehauen.
    Nun noch ein weiteres Problem:
    In der Maske fügt der Benutzer nicht immer einen Anhang an. Wie überprüfe ich dies auf richtige Weise?
    Glaube mein Weg ist der falsche:


    Code
    '----------- Anhang kopieren
    	If Not uidoc.FieldContains( "Anhang", "" ) Then
    		Call uidoc.GotoField( "Anhang" )
    		Call uidoc.SelectAll
    		Call uidoc.Copy 
    		Call uidocNeu.GotoField( "Body" )
    		Call uidocNeu.Paste
    '	Fügt Leerzeile ein
    		Call uidocNeu.InsertText(Chr(10) + Chr(13) + Chr(10) + Chr(13) )
    	End If
  • Diese "offensive" Nutzung der UI-Klassen des Dokuments ist die einzige Möglichkeit (über den Inhalt der Zwischenablage) an einen Anhang heranzukommen, ohne daß das Dokument, in den der Benutzer den Anhang eingefügt hat, vorher gesichert wurde.


    Du findest im Backend noch nichts von dem frisch eingefügten Anhang - und im Frontend gibt es keine Klassen, die dir einen eingefügten Teil als Text, Anhang, OLE-Objekt o.ä. klassifizieren.


    Du bildest mit den UI-Methoden das händische Gehoppel zwischen Feldern nach und automatiserst es. Informationen über die Inhalte gibt es nicht.