![]() |
Problem mit Serienbrief
Hallo!
habe versucht mir eine prozedur um einen Wordserienbrief zu erstellen zu schreiben, scheiter dabei nur leider kläglich. meine Prozedur:
Delphi-Quellcode:
procedure Serienbrief(title : TRichEdit; DBQuelle : String; DBFelder : TStringList; VertAbstand, HorAbstand : integer);
var word : OLEVariant; i : integer; SHorAbstand : String; begin try word:=GetActiveOleObject('Word.Application'); except try word:=CreateOleobject('Word.Application'); except ShowMessage('Microsoft Word kann nicht starten.'); screen.cursor:=crDefault; exit; end; end; word.ActiveDocument.MailMerge.MainDocumentType:=wdFormLetters; title.SelectAll; title.CopyToClipboard; word.Selection.paste; word.ActiveDocument.MailMerge.OpenDataSource(DBQuelle, 'SELECT * FROM ["'+DBQuelle+'"]"'); word.ActiveDocument.MailMerge.EditMainDocument; for i:=0 to VertAbstand do begin word.Selection.TypeParagraph; end; SHorAbstand:=''; for i:=0 to HorAbstand do begin SHorAbstand:=SHorAbstand+' '; end; for i:=0 to DBFelder.Count-1 do begin word.Selection.TypeText(SHorAbstand); word.ActiveDocument.AailMerge.Fields.Add(Word.Selection.Range, DBFelder.Strings[i]); word.Selection.TypeParagraph; end; word:=unassigned; end; Die Fehlermeldung, die ich bekomme, ist, dass "wdFormLetters" unbekannt ist. Habe aber nicht die geringste Idee, woran das liegt... Funktioniert das so, oder gibt es sinvollere/bessere prozeduren um Daten aus einer Datenbank in einen Serienbrief zu übertragen. Danke schon mal für baldige antwort. |
Re: Problem mit Serienbrief
|
Re: Problem mit Serienbrief
Hallo,
Ich habe das immer so gelöst, das ich die Daten in eine Txt geschrieben habe und dies als Quelle für den Serienbrief genutzt aheb, da besteht aber das Problem, dass die Umlaute falsch konvertiert werden. Dann habe ich ![]() |
Re: Problem mit Serienbrief
Danke für eure schnelle Hilfe, die Links haben mir gut geholfen. Werde es wohl erst mal weiter so lösen wie angefangen, da ich das meiste schon habe, fürs nächste mal probier ich mich dann mal an EKRTF. ;)
|
Re: Problem mit Serienbrief
Hallo noch mal!
So weit so gut... Hab jetzt nur noch ein kleines Problem mit der Methode, die ich gefunden habe (s.o.) Wie übergebe ich die Felder, also, dBFields braucht ja die Feldnamen der felder, die aus der Datenbank an Word übergeben werden müssen. Mein Problem, ich habe die einzelnen Tabellen der Datenbank mit DataSorce und Table in mein Delphi Programm eingebunden, und weiss nicht, mit welcher Methode oder Eigenschaft dieser Komponenten man die Feldnamen bekommen kann. Der Feldinhalt ist ja kein Problem... Gruß Chrissy |
Re: Problem mit Serienbrief
Zitat:
ANREDE;NAME;STRASSE;ORT usw. Und danach zeilenweise die Daten, z.B.: Herr;Delphi;Version 7;München Mehr ist es nicht. Dann dementsprechend noch das Hauptdokument aufbauen. Was die Umlaute betrifft, wo liegt das Problem ? Sind es Ascii Zeichen ? |
Re: Problem mit Serienbrief
also, wenn ich mehrere Datenquellen angebe, aus welchen Tabellen der Datenbank die Felder sind, gebe ich unter DBQuelle die Pfade an, wo die Tabellen liegen und unter DBFelder dann die Tabelle.Feld einfach nur als String?!
Gruß Chrissy |
Re: Problem mit Serienbrief
Du machst einen grundlegenden Denkfehler. 8) Word kennt nur eine Datenquelle und ein Hauptdokument. Letzteres ist z.B. ein Blatt Papier, welches Platzhalter enthält. Diese stammen aus der Datenquelle. Diese ist jetzt wichtig, denn diese Daten kommen aus deinem Datenbestand. Allerdings über den Umweg einer Textdatei.
Welche Daten Du da rein packst spielt keine Rolle. Das Hauptdokument fügt alles aus der Datenquelle ein und fertig. Du mußt also nur dafür sorgen, daß nichts fehlt. |
Re: Problem mit Serienbrief
ok, jetzt verstehe ich gar nichts mehr.... ;)
ich habe meine zu grunde liegende Datenbank in Delphi mit Paradox Tabellen, ok, mag ein Fehler sein, angelegt. Die Daten die in den Serienbrief müssen stammen aus einer Datenbank, aber unterschiedlichen Tabellen (Habe keine Datei die die Datenbank komplett beschreibt, sondern nur die einzelnen verknüpften Tabellen). Also habe ich unter DBQuellen aus der Selectanweisung die kompletten Tabellen mit Inner Join on rausgesucht.... So wie ich dich verstehe, ist das auch totaler murks.... Gruß Chrissy |
Re: Problem mit Serienbrief
Zitat:
Diese Datenmenge muß in die Datenquelle und die muß so zusammengebaut sein, daß alle gewünschten Informationnen bereit stehen. Und das schreibt man in die Datei und liest sie im Word ein. Mit Paradox hat das ganze übrigens nichts zu tun. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz