Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: cococo69 am 17.07.03 - 11:33:41

Titel: Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 17.07.03 - 11:33:41
Hallo,

die Suche im Forum habe ich schon bemüht, ich finde jedoch nur Fragen und Lösungen mit Word!

Ich habe
1. ein Kunden-Dokument mit berechneten Feldern für die Adresse und die Brief-Anrede (Sehr geehrte.......)
2. eine Maske mit dem Brief

Einen EINZELNEN Brief kann ich nun wunderbar drucken mittels @Command([Compose]...) und @Command([FilePrint]...).

Wie kann ich nun aber aus einer Ansicht mittles der Brief-Maske einen Serienbrief erstellen???

Geht das überhaupt??? ???
Danke für Eure Antworten!!!

cococo69
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Axel am 17.07.03 - 12:14:35
Hi,

versuch das Ganze mal in einen Agenten zu packen un ihn auf die gewählten Dokumente anzuwenden.


Axel
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Performance am 17.07.03 - 13:32:43
oder mit der NotesToPaper Lösung .... falls die nicht zu teuer ist


cu
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 17.07.03 - 14:32:27
versuch das Ganze mal in einen Agenten zu packen un ihn auf die gewählten Dokumente anzuwenden.
Axel


Geht das per Formel? @Befehle können ja nur über "Einmal ausführen" verwendet werden!?
Wenn nein, wie geht das per Lotus Script?
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: koehlerbv am 17.07.03 - 14:50:02
Mit @functions und @commands wird das wohl nix.

Mit LS geht das simpel, aber das setzt gewisse LS-Kenntnisse voraus und meine Beschreibung soll (und kann) jetzt keinen LS-Kurs ersetzen:

- Agent für "Ausgewählte Dokumente"
- Markierte Dokumente ergeben NotesDocumentCollection
- Loop durch die collection
- Instantiiertes Dokument: Feld Form durch Druckform ersetzen (doc.Form = "Meine Druckform")
- ggf. weitere Felder überarbeiten, austauschen (If doc.Geschlecht (0) = "männlich" then doc.Anredeformel = "Sehr geehrter Herr " else doc.Anredeformel = "Sehr geehrte " end if
- Das fertige Dokument mit NotesUIWorkspace.EditDocument im Lesemodus öffnen
- und ausdrucken
- und ohne zu speichern wieder schliessen

That's it (Ich hoffe, ich habe jetzt so "from the scratch" nix übersehen)

Bernhard
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Axel am 17.07.03 - 14:55:23
Hi,

so kann man's machen. Allerdings hatte ich bei sowas ähnlichem schon Probleme, wenn es mehrere Dokumente waren. Irgendwann, aber regelmäßig nach dem 10. - 15. Dokument ist mir der Client mit einer Redbox (LookupHandle) abgeschmiert.

Probier's aus.


Axel

 
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: koehlerbv am 17.07.03 - 15:05:58
In Formelsprache habe ich bei vom Prinzip her ähnlichen Operationen auch Ärger erlebt. Offensichtlich führt Notes die Aktionen nicht in genau dem zeitlichen Ablauf aus, den wir erwarten / programmiert haben, sondern versucht irgendwas parallel - und irgendwann sind zu viele handles belegt, Fenster offen etc.
Sicher ist dies auch von der Client-Version abhängig.
In dem Falle sollte man nach jedem Schleifendurchlauf per Programm eine gewisse Ruhepause verordnen. Hier hilft wirklich nur "probieren geht über studieren" ...
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 17.07.03 - 19:56:38
@cococ69

... arbeitest du mit Word-Teplates, oder erstellst du die Word-Docs komplett neu?

... wenn du Vorlagen verwendest, dann hätte ich dir eventuell eine Lösung, den anderen Weg müsste ich mir auch erst zurecht legen...

... Grundgedanke ist die Serienbrief-Funktionalität von Word zu nutzen - in Verbindung mit einem Datendokument, das ebenfalls erstellt wird und an einer definierten Stelle auffindbar sein muß...

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 17.07.03 - 20:20:30
@ata

eigentlich wollte ich das Ganze OHNE Word machen!

Wie beschrieben, habe ich bereits bestehende Datendokumente mit berechneten Feldern, in welchen die Adressdaten bereits fertig hinterlegt sind.
Ferner habe ich eine Maske, welche den Brieftext enthält und aus den Datendokumenten die Adressdaten zieht.

Mit einzelnen Briefen klappt dies ja auch wunderbar, aber wie kann ich auf diese Weise ALLE Datendokumente einer Ansicht mit einem (Serien-)Brief mischen???

Wenn das nicht geht bzw. zu aufwändig ist würde ich auch den Umweg über Word gehen.

Gruß
cococo69
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 17.07.03 - 20:33:32
... sorry, ich habe dein Posting zu schnell gelesen. Ich stell dir die nächsten Tage ne Demo ins Web...

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 20.07.03 - 16:50:09
... der vorgeschlagene Weg von koehlerbv endet bei dem Einwand von Axel - auch Ruhepausen helfen hier nicht wirklich - wer mehr als 10-15 Seiten ausdrucken möchte muß entweder eines der kaufbaren Tools verwenden - oder den Umweg über Word nehmen - ich habe mehrere Sachen ausprobiert...

... was noch bleiben würde wäre ein Gang über RTF-Dateien und dem Print-Befehl über das OS - und da habe ich gerade keine Muse...


@cococo69
... aus Gründen der Handlebarkeit würde ich dir den Weg über MS Word oder Word Pro empfehlen...

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 20.07.03 - 18:23:33
@ata

1000 Dank für Deien Sonntags-Arbeit!!!
Dann werde ich halt mal schauen, welchen Weg ich gehen soll!

cococo69
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Thomas Schulte am 20.07.03 - 19:50:58
Die Generierung von uidocumenten aus einem Agent endet bis V5.07 oder 08 immer in einer Redbox. Je nach Umfang des Dokumentes mal nach 10, 15 oder 40 Dokumenten. Ursache scheint eine Fehler in der Speicherallocation zu sein die den zugeordneten Speicher obwohl das UIDoc mit close wieder geschlossen wird den Speicher nicht wieder freigibt.
Ich habe eine Bildverwaltung geschrieben in der der Anwender ein definiertes Verzeichnis angibt und dann alle Bilddateien in diesem Verzeichnis ausgelesen und über Script in ein RTFeld importiert werden. Dazu ist es erforderlich ein UIDoc aufzumachen und anschließend wieder zu schließen. Bis V5.07 hat das nicht funktioniert. Ab V5.09 spätestens gibt es die Möglichkeit im UIDoc.Close einen Parameter mitzugeben, der das uidoc tatsächlich schließt und den Speicher wieder freigibt uidoc.close(True). Damit verschwinden in solchen Fällen im Normalfall dann auch die Redboxes.

Thomas
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 20.07.03 - 23:21:23
@Thomas

... danke für deinen Hinweis - leider arbeite ich kundenbezogen mit Versionen von 5.05 bis 5.08 - Kunde hat hauptsächlich 5.07a - daher hatte ich dort die von dir und Axel beschriebenen Probleme - aber vielelicht kann cococo69 was damit anfangen...

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Axel am 21.07.03 - 08:23:55
Die Generierung von uidocumenten aus einem Agent endet bis V5.07 oder 08 immer in einer Redbox. Je nach Umfang des Dokumentes mal nach 10, 15 oder 40 Dokumenten. Ursache scheint eine Fehler in der Speicherallocation zu sein die den zugeordneten Speicher obwohl das UIDoc mit close wieder geschlossen wird den Speicher nicht wieder freigibt.
Ich habe eine Bildverwaltung geschrieben in der der Anwender ein definiertes Verzeichnis angibt und dann alle Bilddateien in diesem Verzeichnis ausgelesen und über Script in ein RTFeld importiert werden. Dazu ist es erforderlich ein UIDoc aufzumachen und anschließend wieder zu schließen. Bis V5.07 hat das nicht funktioniert. Ab V5.09 spätestens gibt es die Möglichkeit im UIDoc.Close einen Parameter mitzugeben, der das uidoc tatsächlich schließt und den Speicher wieder freigibt uidoc.close(True). Damit verschwinden in solchen Fällen im Normalfall dann auch die Redboxes.

Thomas

Hi,

diese Redboxes gibt es auch noch in Version 5.0.11


Axel
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 21.07.03 - 09:35:43
Wir werden nun wohl nicht über Word oder WordPro drucken, sondern doch direkt aus Notes!

@Ata,
vielleicht kannst Du mir Deine Lösung zur Verfügung stellen, dann können wir zumindest in 5er- oder 10er-Paketen die Briefe drucken (immer noch besser als jeden einzeln!)?

cococo69
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Jérôme am 21.07.03 - 11:19:57
Hallo!

Auf http://www.bit-informatik.de (http://www.bit-informatik.de) kannst du im Punkt "Produkte -> OfficeForce" eine Demo-Version von eben OfficeForce runterladen.

In dieser ziemlich guten CRM-Anwendung kannst du unter anderm auch Serienbriefe drucken. Wir haben die Anwendung selbst im Einsatz und haben schon tausende Serienbriefe damit gedruckt.

Für die private Anwendung ist das Programm übrigens kostenlos - man kann sie dann allerdings nicht mit einem Server verwenden, sondern nur lokal.

Gruß
- Jérôme
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 21.07.03 - 16:48:45
@cococo69

... ich schnür dir ne Demo...

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 21.07.03 - 18:30:50
@cococo69

... ich war mal wider zu schnell - an was hast du denn nun Interesse...

... an der schlecht funktionierenden Methode mit Notes über UI und mögliche Redbox-Abstürze,

... oder an der Möglichkeit über MS Word-Serienbrief und Ausdruck über MS Word?

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 22.07.03 - 10:09:19
@ata

ich dachte an die "schlecht funktionierende Methode mit Notes über UI und mögliche Redbox-Abstürze" um dann halt in 5er- oder 10er-Paketen (je nachdem, wie zuverlässig das Ganze läuft) die Briefe auszudrucken!

Wenn Du mir die Word-Lösung ohne weiteren Aufwand ZUSÄTZLICH zur Verfügung stellen kannst, könnte ich das für ein künftiges Projekt wahrscheinlich auch gebrauchen!

Gruß
cococo69
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Doc Torte am 22.07.03 - 10:27:11
es gibt eine ganz annehmbar Lösung für eine Serienbrief-Funktion in Notes, jedenfalls setzt Sie ein Kunde von uns sehr erfolgreich ein. Ist von mir entwickelt und hat bei einem Belastungstest von mir 70000 Briefe am Stück generiert - voll dynamische Dokumente sogar mit "Platzhaltern" für die Wertübernahme aus sogenannten "Kundenstammdatendokumenten" - die generierung der Briefe läuft dabei in Script - die so erstellten Dokumente verschiebe ich in einen Folder - über einen Formelagenten lasse ich diese markieren und ausdrucken - dieses Tool hat sogar noch die Features, das anhand bestimmter Schlüssel die angegebenen verantwortlichen Sachbearbeiter eingetragen und wenn gewünscht eine eingescannte Unterschrift in den Breif gelegt wird, schon bei der Brieferstellung kann über verschiedene Vorlagen entschieden und auch unterschiedliches Briefpapier gewählt werden...

ist auch mal Werbung in eigener Sache...
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 22.07.03 - 10:56:25
... also ich poste das dann morgen im Laufe des Tages - vorher habe ich kaum Zeit...

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 24.07.03 - 00:31:25
... ein einfaches Konstrukt eines Notes-Internen Serienbriefes - einigermaßen stabil...

http://www.anton-tauscher.de/download/print.nsf (http://www.anton-tauscher.de/download/print.nsf)

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: notesnewbie am 24.07.03 - 07:28:36
Hi,

ich hab das selbe Problem mit den Serienbriefen.  :(

@ata: Falls es Dir möglich ist, wäre ich Dir dankbar wenn du das Demo über die Lösung mit Word freigeben könntest. Natürlich nur
wenn es kein großer Aufwand für DIch ist.


N. Newbie
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 24.07.03 - 07:34:48
... ich bin dabei das in eine vernünftige Demo zu packen - ein paar Tage Geduld - dann wird die Demo etwas umfangreicher...

ata
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 24.07.03 - 09:51:46
@ata,

na, hast Du wieder einmal mehr eine Nachtschicht eingelegt, um Deine Lösung ins Netz zu stellen???!!!!!!!
Ich sage einfach nur  DANKE!!!

Jetzt ist es bei mir aber so, dass ich nicht vom Briefdokument ausgehe und dazu die Adressen suche,
sondern ich habe eine Ansicht mit einer Auswahl von Kunden-Adressdokumenten an welche ich einen Brief senden möchte.

Für mich wäre es also besser, wenn ich aus der Anicht mit den Kunden-Adressdokumenten den gewünschten Brief auswählen könnte.

Ist das so auch denkbar???

cococo69
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: cococo69 am 24.07.03 - 09:56:22
@Doc Torte

kannst Du vielleicht mal etwas genauer erklären wie bei Deiner Lösung der genaue Ablauf ist?

Wie ist  Dein Ansatz?
Hast Du eine Briefvorlage und wählst dazu die gewünschten Adressen (wie, und wo)?
Oder hast Du eine Ansicht mit Adressen und wählst dazu den gewünschten Brief?
Vielleicht kannst Du sogar ein paar Screenshots liefern?

cococo69
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: Doc Torte am 24.07.03 - 10:18:22
@cococo69

also, hier mal ein Abriss.

Die "MailingDB" ist in einem CRM eingebettet, aber ohne sehr großen Aufwand in andere  einpflegbar. dort kann der User eins oder mehrere Dokumente selektieren und über eine Aktion ein Mailing auslösen, er bekommt dann die Abfrage, ob ein Serienmailing(bei mehr als einer Selektion) oder ein Einzelmailing, er wählt die Art aus (Brief/Fax/e-Mail) und eine hinterlegte Vorlage, bzw. erstellt auch gleich eine neue, dann sagt er nur noch okay und bekommt den Brief/Fax/E-Mail in der Vorschau angezeigt, hier kann er noch textliche Änderungen an der Vorlage vornehmen (Platzhalter einfügen usw. dann gibts nur noch den Button zum versenden, bzw. ausdrucken. Ist dieser gedrückt, rechnet ein Script im die Briefe/Faxe/E-Mails zusammen und erstellt Dokumente, diese sind über die eingefügten Platzhalter auch sehr Kundenorientiert, da ich so Daten aus den Kundendokumenten im Brieftext benutzen kann. Sind alle Dokumente errechnet, selectiert ein Agent die Dokumente anhand der Kennung für genau die jeweilige Session und druckt diese aus, bei Fax und E-Mail werden diese direkt aus dem Coding versendet - dadurch ist auch das Arbeiten von mehreren Usern zeitgleich möglch.

das ist so die grobe Beschreibung, gibt natürlich ne Menge zur Konfiguration, da es auch möglich ist, den Sachbearbeiter zuordnen zu lassen und eine eventuell hinterlegte Unterschrift in die Briefe einzubinden.

die Werteübernahme aus der "Stammdatenbank" der Kundendokumente in die "Mailing DB" war schon etwas aufwendiger, da sichergestellt werden sollte, daß egal wieviel Dokumente selektiert werden, die Performance nicht all zu dolle leiden soll. auch das rechnen der Briefe mit den Platzhaltern nimmt etwas Zeit in Anspruch, aber bei einem Test hier bei uns im Haus hatte ich 70000 Briefe innerhalb von 7- 10 min , da hätte nur der Drucker gekotzt. und vielleicht auch der, der für das Marken kleben verantwortlich wäre... ;-)
Titel: Re:Serienbrief INNERHALB Notes ???
Beitrag von: ata am 24.07.03 - 10:58:23
@cococo69

... klar ist das machbar, dann dreht man eben den Ablauf...
... dann baut man eine Aktion in die Adressdatenbank und und wählt eben den Brief aus...

Code
Sub Click(Source As Button)   
' # Serienbrief-Ausdruck...
' # - die Aktion ist in einer Notes-Adressdatenbank, z.B. in der Ansicht "People"
' # - die Vorlagendatenbank heißt "Print.nsf" und liegt lokal
' # - ... die Vorlagendatenbank hat eine Ansicht "Briefvorlagen"
' # - ... die Felder in der Briefvorlage entsprechen den Feldern der Adressdokumente... 
' #########################################################
' # ... Adressen werden markiert ...
' # ... aus einer Picklist wird eine Briefvorlage gewählt
' # ... die Vorlage wird mit den Adressdaten initialisiert
' # ... das Dokument wird ins Frontend geholt und ausgedruckt
' # ... ... Print ohne Parameter = Druckdialog erscheint
' # ... ... Print mit Parameter = es erscheint kein Druckdialog
' # Der Ausdruck kann nur mit einem lokalen Rechner angestossen werden...
' # ############################################################   
' # ata  :-))
   
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim dbThis As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim docLetter As NotesDocument
   Dim dbBV As NotesDatabase ' BriefVorlage
   Dim docAddress As NotesDocument
   Dim FieldList( 0 To 4) As String
   Dim vValue As Variant
   Dim i As Long
   
   FieldList( 0 ) = "FirstName"
   FieldList( 1 ) = "LastName"
   FieldList( 2 ) = "StreetAddress"
   FieldList( 3 ) = "Zip"
   FieldList( 4 ) = "City"
   
   
   
   Set dbThis = session.CurrentDatabase
   Set dbBV = session.GetDatabase( "" , "print.nsf")
   If dbBV.IsOpen Then
      ' # Briefvorlage  auswählen
      Set dc = ws.PickListCollection( 1 , True ,  "" , "print.nsf" , "Briefvorlagen", "Auswahl einer Briefvorlage..." , "Wählen Sie die Briefvorlage des Serienbriefes aus der Liste" )
      ' # Es soll nur eine Vorlage akzeptiert werden
      If dc.Count = 0  Then
         Msgbox "Abbruch - es muß eine Briefvorlage ausgewählt werden..."
         Exit Sub
      Elseif dc.Count = 1 Then
         Set docLetter = dc.getFirstDocument
      Else
         Msgbox "Abbruch - es soll nur eine Briefvorlage ausgewählt werden..."
         Exit Sub
      End If
   Else
      Msgbox "Abbruch - die Datenbank mit den Briefvorlagen konnte nicht geöffnet werden..."
      Exit Sub
   End If   
   
   Set dc = dbThis.UnprocessedDocuments
   If dc.Count = 0 Then
      Msgbox "Abbruch - es müssen Adressen ausgewählt werden..."
      Exit Sub
   End If   
   
   If dc.Count >0 Then
      Set docAddress = dc.GetFirstDocument         
      While Not docAddress Is Nothing
            ' # ... Adressfelder übertragen...
         For i = 0 To Ubound( FieldList )
            vValue = docAddress.GetItemValue( FieldList( i ) )
            Call docLetter.ReplaceItemValue( FieldList( i ) , vValue(0) )
         Next
         Set uidoc = ws.EditDocument( False , docLetter )
         ' Call uidoc.Print( 1 ) ' # Druck ohne Chance Abbrechen zu können...
         Print "... Brief an " + docAddress.Firstname(0) + " " + docAddress.Lastname(0) + " wird ausgedruckt..."
         'Call uidoc.Print ' # Druck mit Druckdialog - bei Abbrechen wird das angezeigte Dokument nicht gedruckt
         Call uidoc.Close
         Set docAddress = dc.GetNextDocument( docAddress )
      Wend
   Else
      Msgbox "Abbruch - es wurden keine Empfänger ausgewählt..."      
      Exit Sub
   End If
   
   
End Sub

ata