Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Bruce Willis am 13.04.10 - 18:28:59
-
Hallo,
als eine der "Einfachen Aktionen" bei einem einfachen Agenten kann man "Infobrief-Zusammenfassung senden" auswählen, die dann per Email
eine Zusammenfassung mit Links zu den individuellen Dokumenten sendet.
Die Zusammenfassung sieht wie eine Tabelle aus und enthält Elemente der entsprechenden Ansicht wie beispielsweise eine einzeilige Beschreibung der Spalten "Datum", "Autor" und "Titel".
FRAGE:
Gibt's eine LotusScript Funktion o.ä., um solche Zusammenfassung zu erstellen und zu versenden?
Gruß
Leo
-
In LotusScript ist das erheblich granularer aufgeteilt (methods, properties) und bietet somit viel mehr Möglichkeiten.
Bernhard
-
In LotusScript ist das erheblich granularer aufgeteilt (methods, properties) und bietet somit viel mehr Möglichkeiten.
D.h. man muss in LotusScript das selber basteln, was man in einem einfachen Agenten als fertige Lösung mit einem Klick auswählen kann.
Schade.
Danke für die schnelle Antwort, Bernhard.
Gruß
Leo
-
Wieso "schade"? Die Einschränkungen des "Agents für Arme / Eilige" beschreibst Du ja im ersten Ansatz oben schon selber.
Bernhard
-
Wieso "schade"?
wie gesagt:
man muss in LotusScript das selber basteln, was man in einem einfachen Agenten als fertige Lösung mit einem Klick auswählen kann.
-
Hi,
anbei meine Ergebnisse...
Kann man die Infomail schöner formatieren?
Chr(9)) reicht nicht aus, da die Länge von Inhalten der Spalten sehr unterschiedlich sein kann...
Gruß
Leo
Sub Initialize()
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim message As NotesDocument
Dim rtitem As variant
Set db = session.currentdatabase
Set view = db.GetView("LeoAnsicht")
Set doc = view.GetFirstDocument
Set message = New NotesDocument(db)
Set rtitem = New NotesRichTextItem( Message, "Body" )
Message.Form = "Memo"
Message.Principal = "Bruce Willis/World"
Message.SendTo = "Leo/World"
Message.Subject = "Hello World"
Call rtitem.AppendText( "Hi there")
Call rtitem.AddNewLine( 2)
While Not doc Is Nothing
Call rtitem.AppendDocLink( doc, "" )
Call rtitem.AppendText( " " + Left(doc.From(0),10) + Chr(9))
Call rtitem.AppendText( Left(doc.SendTo(0),10) + Chr(9))
Call rtitem.AppendText( Left(doc.Subject(0),20) + Chr(9))
Call rtitem.AppendText(doc.DeliveredDate(0))
Call rtitem.AddNewLine( 1)
Set doc = view.GetNextDocument(doc)
Wend
Call rtitem.AppendText( "Best regards" )
Call rtitem.AddNewLine( 1)
Call Message.Send( False )
End Sub
-
Klar, man kann die Ruler entsprechend setzen (NotesRichTextParagrahStyle class und "Kinder" davon).
Und dort wirst Du noch einiges mehr finden, was die simple Aktion Dir nicht bietet.
Bernhard
-
Danke, Bernhard.
Ich habe den Code entsprechend erweitert, aber die 3. und 4. Spalten der Infomail kommen trotzdem durcheinander.
Weißt Du, was man noch ändern muss?
Gruß
Leo
Sub Initialize()
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim message As NotesDocument
Dim rtitem As Variant
Dim pMailAddress As String
Set db = session.currentdatabase
Set view = db.GetView("LeoAnsicht")
Set doc = view.GetFirstDocument
Set message = New NotesDocument(db)
Set rtitem = New NotesRichTextItem( Message, "Body" )
Dim richStyle As NotesRichTextStyle ' Leo Style
Set richStyle = session.CreateRichTextStyle ' Leo Style
richstyle.NotesFont = 4 ' Leo Style - "vorgabe feste breite"
Dim rtpStyle As NotesRichTextParagraphStyle ' Leo Align Left
Set rtpStyle = session.CreateRichTextParagraphStyle ' Leo Align Left
rtpStyle.Alignment = ALIGN_LEFT ' Leo Align Left
Dim pos As Long ' Leo Ruler
pos = RULER_ONE_CENTIMETER * 7 ' Leo Ruler
'Call rtpStyle.SetTab(pos, TAB_DECIMAL) ' Leo Ruler
Call rtpStyle.SetTab(pos, TAB_LEFT) ' Leo Ruler
Message.Form = "Memo"
Message.Principal = pMailAddress
Message.Principal = "Bruce Willis/World"
Message.SendTo = "Leo/World"
Message.Subject = "Hello World"
Call rtitem.AppendStyle(richStyle) ' Leo Style
Call rtitem.AppendParagraphStyle(rtpStyle) ' Leo Align Left
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
Call rtitem.AddNewLine( 2)
While Not doc Is Nothing
' in Common Names konvertieren
Dim nam As NotesName
Set nam = session.Createname(doc.From(0))
Dim nam1 As NotesName
Set nam1 = session.Createname(doc.SendTo(0))
Call rtitem.AppendDocLink( doc, "" )
Call rtitem.AppendText( " " + Left( nam.common ,15))
Call rtitem.AddTab(1)
Call rtitem.AppendText( Left( nam1.common ,15) )
Call rtitem.AddTab(1)
Call rtitem.AppendText( Left(doc.Subject(0),30))
Call rtitem.AddTab(1)
Call rtitem.AppendText( doc.DeliveredDate(0))
Call rtitem.AddNewLine( 1)
Set doc = view.GetNextDocument(doc)
Wend
Call rtitem.AppendText( "Best regards" )
Call rtitem.AddNewLine( 1)
Call Message.Send( False )
End Sub
-
Wie wäre es mit dem Setzen eines zweiten und dritten Tabs?
Bernhard
-
Wie wäre es ...?
Bestimmt cool!
Aber wie?
So geht es anscheinend nicht:
Dim rtpStyle As NotesRichTextParagraphStyle ' Leo Align Left
Set rtpStyle = session.CreateRichTextParagraphStyle ' Leo Align Left
'rtpStyle.Alignment = ALIGN_LEFT ' Leo Align Left
Dim pos As Long
Dim interval As Long
pos = RULER_ONE_CENTIMETER
interval = RULER_ONE_CENTIMETER * 5
Call rtpStyle.SetTabs(6, pos, interval, TAB_LEFT)
Message.Form = "Memo"
Message.Principal = "Bruce Willis/World"
Message.SendTo = "Leo/World"
Message.Subject = "Hello World"
Call rtitem.AppendStyle(richStyle) ' Leo Style
Call rtitem.AppendParagraphStyle(rtpStyle) ' Leo Align Left
Call rtitem.AppendText( "Hi there")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
Call rtitem.AddNewLine( 2)
While Not doc Is Nothing
' in Common Names konvertieren
Dim nam As NotesName
Set nam = session.Createname(doc.From(0))
Dim nam1 As NotesName
Set nam1 = session.Createname(doc.SendTo(0))
Call rtitem.AppendDocLink( doc, "" )
Call rtitem.AppendText( " " + Left( nam.common ,13))
Call rtitem.AddTab(1)
Call rtitem.AppendText( " " + Left( nam1.common ,18) )
Call rtitem.AddTab(1)
Call rtitem.AppendText( Left(doc.Subject(0),22))
Call rtitem.AddTab(1)
Call rtitem.AppendText( doc.DeliveredDate(0))
Call rtitem.AddNewLine( 1)
-
Ach Leo ... Wie setzt Du Tabs händisch? Findest Du das in der DesignerHelp nicht wieder?
Bernhard
-
Ach Leo ...
Ach Bernhard... Sag schon, was und wo in meinem Code falsch ist oder fehlt... :)
Wie setzt Du Tabs händisch?
eh... verstehe die Frage nicht...
Findest Du das in der DesignerHelp nicht wieder?
Nein.
Ich habe dort mehrere englische Definitionen sowie Beispiele gefunden aber keine einzige Beschreibung bzw. Erklärung.
-
Evt. meint er mit händisch.....
Wenn Du nach einem Text einen Tab über die Tastatur setzt ist zwar der Abstand immer der gleiche
da Du ja aber längeren und kürzeren Text hast kommt es dann zum Versatz.
Du müsstest also die Stelle an der der nächste Text kommt fest vorgeben.
Tab1 = 0
Tab2 = 10
Tab3 = 20
etc.
Wäre jetzt so meine Überlegung.
Boris
P.S Hast Du mal mit TAB_DECIMAL probiert?
-
Hallo Boris,
Evt. meint er mit händisch.....
Danke für Deinen Tipp!
Hast Du mal mit TAB_DECIMAL probiert?
Nein, obwohl ich mit diesem LS Sch ohne einer vernünftigen Anleitung schon etwa eine Stunde experimentiert hatte... :(
Ich probiere es auch mal.
Gruß
Leo
-
Händisch gibst Du einen Tab nach dem anderen ein - erzähl, was Du willst, aber drei Stück gleichzeitig schaffst auch Du nicht, Leo. Gleiches gilt für das Setzen der Properties der Tabs in der NotesRichTextParagraphStyle class ...
Bernhard
-
erzähl, was Du willst, aber drei Stück gleichzeitig schaffst auch Du nicht, Leo.
Bernhard, ich möchte überhaupt nichts erzählen sondern eher dich bewegen, etwas zu erzählen.
Und zwar, wie Du diese drei Spalten zuordnen würdest:
...
Call rtitem.AppendText( "Hi there")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "Hi there")
...
Wenn Du das weißt und 5 Min Zeit hast.
Leo
-
Nimms mir nicht übel, Leo, aber ich habe das nun schon mehr als einmal geschrieben. Okay, ein drittes Mal:
- Alle Tabs definieren
- Text schreiben (nach Lust und Laune dann mit Tab-Sprüngen).
Bernhard
-
ich habe das nun schon mehr als einmal geschrieben. Okay, ein drittes Mal:
- Alle Tabs definieren
- Text schreiben
Schade, dass wir aneinander vorbei reden bzw. Du meine Bitte nicht verstehen willst.
In Hilfe zum Designer 8.5.1 ist nirgendwo beschrieben, wie man mehrere Tabs definieren kann.
-
Oh Mann, Leo, von "LS Sch" schreiben und dann sowas ...
Setze jeden Tab, den Du haben willst:
Call notesRichTextParagraphStyle.SetTab (3 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (5,5 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (7,85 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (11 * RULER_ONE_CENTIMETER, TAB_LEFT)
Bernhard
-
Oh Mann, Leo, von "LS Sch" schreiben und dann sowas ...
Oh Mann, Bernhard, Du ließt also doch aufmerksam alles was ich schreibe... ;)
Setze jeden Tab, den Du haben willst:
Call notesRichTextParagraphStyle.SetTab (3 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (5,5 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (7,85 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (11 * RULER_ONE_CENTIMETER, TAB_LEFT)
Vielen Dank! :knuddel:
Ich werde es morgen probieren.
Gruß
Leo
-
Oh Mann, Bernhard, Du ließt also doch aufmerksam alles was ich schreibe... ;)
Aber Du nicht, was ich schreibe ...
Bernhard
-
Setze jeden Tab, den Du haben willst:
Call notesRichTextParagraphStyle.SetTab (3 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (5,5 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (7,85 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call notesRichTextParagraphStyle.SetTab (11 * RULER_ONE_CENTIMETER, TAB_LEFT)
Funktioniert nicht:
1. Die Zahlen mit Komma bringen Fehlermeldungen.
2. Die Spaltenbreiten sind gleich:
Dim rtpStyle As NotesRichTextParagraphStyle
Set rtpStyle = session.CreateRichTextParagraphStyle
Call rtitem.AppendText( "Hi there")
Call rtitem.AddNewLine( 1)
Call rtitem.AppendText( "titel1")
Call rtpstyle.SetTab (13 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel2")
Call rtpstyle.SetTab (18 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel3")
Call rtpstyle.SetTab (25 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel4")
Call rtpstyle.SetTab (35 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel5")
Call rtitem.AddNewLine( 2)
-
Und die andere Reihenfolge funktioniert auch nicht:
Dim rtpStyle As NotesRichTextParagraphStyle
Set rtpStyle = session.CreateRichTextParagraphStyle
Call rtitem.AppendText( "Hi there")
Call rtitem.AddNewLine( 1)
Call rtitem.AppendText( "titel1")
Call rtitem.AddTab(1)
Call rtpstyle.SetTab (8 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendText( "titel2")
Call rtitem.AddTab(1)
Call rtpstyle.SetTab (18 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendText( "titel3")
Call rtitem.AddTab(1)
Call rtpstyle.SetTab (20 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendText( "titel4")
Call rtitem.AddTab(1)
Call rtpstyle.SetTab (30 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendText( "titel5")
Call rtitem.AddNewLine( 2)
-
1) Ersetze das Komma durch den Punkt. Ich hatte die falsche Notation gewählt.
2) Wo ist Dein NotesRichText.AppendParagraphStyle ? Du weist den Style doch gar nicht dem RT-Paragraph zu!
Bernhard
-
Danke, Bernhard.
Funktioniert trotzdem nicht :(
Ob mit "'Call rtitem.AddTab(1)" oder auch ohne:
Dim rtpStyle As NotesRichTextParagraphStyle
Set rtpStyle = session.CreateRichTextParagraphStyle
Call rtitem.AppendText( "Hi there")
Call rtitem.AddNewLine( 1)
Call rtitem.AppendParagraphStyle(rtpStyle)
Call rtitem.AppendText( "titel1")
'Call rtitem.AddTab(1)
Call rtpstyle.SetTab (6 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendParagraphStyle(rtpStyle)
Call rtitem.AppendText( "titel2")
'Call rtitem.AddTab(1)
Call rtpstyle.SetTab (12 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendParagraphStyle(rtpStyle)
Call rtitem.AppendText( "titel3")
'Call rtitem.AddTab(1)
Call rtpstyle.SetTab (20 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendParagraphStyle(rtpStyle)
Call rtitem.AppendText( "titel4")
'Call rtitem.AddTab(1)
Call rtpstyle.SetTab (23 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtitem.AppendParagraphStyle(rtpStyle)
Call rtitem.AppendText( "titel5")
Call rtitem.AddNewLine( 2)
-
Leo, denke doch mal über die Reihenfolge Deiner Schritte nach. Bitte.
- Paragraph style erstellen (komplett!)
- Paragraph style zuweisen
Dann den Text schreiben. Deshalb hatte ich doch geschrieben: "Wie machst Du es manuell?"
Bernhard
-
Danke, Bernhard, dass Du die Zeit gefunden hast, mir nochmals zu schreiben.
Das Thema hatten wir in der Tat schon auf der vorherigen Seite.
Leider verstehe ich immer noch nicht, was Du meinst.
Falls Du ein paar Zeilen nicht korrigieren möchtest, vergessen wir die Sache einfach.
Gute Nacht
Leo
-
Leo, wenn Du Post #25 nicht verstehst, bin ich raus aus der Nummer. Und fertigen Code gibt es hier in der Regel nicht, sondern die Anleitung für das Verständnis.
Auch ich wünsche Dir eine gute Nacht.
Bernhard
-
fertigen Code gibt es hier in der Regel nicht, sondern die Anleitung für das Verständnis.
Bernhard
Wo bekomme ich denn diese 6 oder 8 Zeilen "fertigen" Bespiel-Code als "die Anleitung für das Verständnis", wie man zwei Spalten formatiert?
In einem beliebigen anderen Notes Forum im Internet?
Oder bei Dir direkt als ein lukrativer Auftrag?
Gruß
Leo
P.S. 20.04.2010 14:08
Sorry, ich war etwas aufgeregt.
-
Manchmal sieht man den Wald vor lauter Bäumen nicht. Probier doch mal das so zu schreiben (ohne Gewähr, habe nur Dein Script sortiert):
'1. Style definieren
Dim rtpStyle As NotesRichTextParagraphStyle
Set rtpStyle = session.CreateRichTextParagraphStyle
Call rtpstyle.SetTab (6 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtpstyle.SetTab (12 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtpstyle.SetTab (20 * RULER_ONE_CENTIMETER, TAB_LEFT)
Call rtpstyle.SetTab (23 * RULER_ONE_CENTIMETER, TAB_LEFT)
'2. Style zuordnen
Call rtitem.AppendParagraphStyle(rtpStyle)
'3. Text schreiben
Call rtitem.AppendText( "Hi there")
Call rtitem.AddNewLine( 1)
Call rtitem.AppendText( "titel1")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel2")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel3")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel4")
Call rtitem.AddTab(1)
Call rtitem.AppendText( "titel5")
Call rtitem.AddNewLine( 2)
-
Manchmal sieht man den Wald vor lauter Bäumen nicht. Probier doch mal das so zu schreiben (ohne Gewähr, habe nur Dein Script sortiert)...
Oh... Ich hatte wirklich ein Blackout... :o
Vielen Dank, Peter!!! :love:
Es funktioniert!
Danke an ALLE Beteiligten!