Einzelnen Beitrag anzeigen

Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#1

Serienbrief Datenbank-Tabelle wird nicht übermittelt??

  Alt 2. Aug 2008, 20:47
Hi,

folgender code erzeugt mir einen Serienbrief:

Delphi-Quellcode:
Procedure MachEinSerienBrief(Titel:TRichEdit; DBQuelle: String; DBFelder:TStringlist; VertAbstand: Integer; 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;
  titel.SelectAll;
  titel.CopyToClipboard;
  Word.Selection.paste;
  //word.ActiveDocument.MailMerge.OpenDataSource(DBQuelle,'SELECT * FROM [" '+ DBQuelle +' "]"'); DBQuelle ist ja der Pfad zur Access Datenbank, da kann ich ja kein Select machen
  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.MailMerge.Fields.Add(Word.Selection.Range,DBFelder.Strings[i]);
    Word.Selection.TypeParagraph;
  end;
  Word := Unassigned;
end;
Funktioniert auch ganz gut, nur was mich stört ist, dass in Word ein fenster aufpoppt, wo ALLE Tabellen meiner Datenbank angezeigt werden und ich somit meine Tabelle auswählen muss, welche als Datenquelle genutzt werden soll.
Mit folgendem Code habe ich es auch schon versucht allerdings erscheint immer wieder das Fenster:
word.ActiveDocument.MailMerge.OpenDataSource(DBQuelle,'SELECT * FROM Profil'); Wird die Tabelle an einer falschen Position übergeben oder warum nimmt er den Select Befehl nicht an?

Ich möchte später auch einmal einen Serienbrief erstellen, der mit einem größeren Select abgefragt wird, weil ich manchmal nur bestimmte Datensätze als Serienbrief drucken möchte.


Jemand eine Idee
Grüße
  Mit Zitat antworten Zitat