Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit Serienbrief (https://www.delphipraxis.net/37557-problem-mit-serienbrief.html)

chrissy 7. Jan 2005 10:25


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.

Leuselator 7. Jan 2005 10:28

Re: Problem mit Serienbrief
 
vielleicht hülft das??
Gruß
PS: willkommen in der DP!

Albi 7. Jan 2005 10:31

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 hier eine super Komponete gefunden. Du brauchst nichts mehr großartig an Code schreiben und der große Vorteil, es muß auch nicht Word Installiert sein.

chrissy 7. Jan 2005 11:53

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. ;)

chrissy 10. Jan 2005 18:43

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

Hansa 10. Jan 2005 20:38

Re: Problem mit Serienbrief
 
Zitat:

Zitat von chrissy
Wie übergebe ich die Felder, also, dBFields braucht ja die Feldnamen der felder, die aus der Datenbank an Word übergeben werden müssen...

Die Feldnamen interessieren nicht. Du schreibst in die erste Zeile der Datenquelle z.B. folgendes:

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 ?

chrissy 10. Jan 2005 21:04

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

Hansa 10. Jan 2005 23:34

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.

chrissy 10. Jan 2005 23:49

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

Hansa 11. Jan 2005 00:46

Re: Problem mit Serienbrief
 
Zitat:

Zitat von chrissy
ok, jetzt verstehe ich gar nichts mehr...

So schwer ist das doch gar nicht. :shock: Der angesprochene "Denkfehler" bezieht sich auf die Tabellen und das was Word davon abkriegt. Wenn Du sogar einen Join verwendest, dann entsteht eine Datenmenge, nicht etwa so viele wie Tabellen da sind.

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 00:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz