Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Serienbrief Datenbank-Tabelle wird nicht übermittelt?? (https://www.delphipraxis.net/118205-serienbrief-datenbank-tabelle-wird-nicht-uebermittelt.html)

Overclocker 2. Aug 2008 20:47


Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
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:
Delphi-Quellcode:
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

rotfc 2. Aug 2008 21:00

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
Wie es mit Delphi ginge, habe ich noch nie probiert, aber ich würde an Word keine Access-Tabelle, sondern eine Access-Auswahlabfrage übergeben (notfalls eben ein * in der Auswahlabfrage).

Probier das doch mal aus.

Overclocker 2. Aug 2008 21:04

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
wie meinst du das?

anstatt select * from profil
ein select * from profil where id=1 oder sowas in der art???
habe ich schon versucht,alles nichts gebracht :(

Keldorn 3. Aug 2008 07:34

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
Hallo,

das sollte kein Problem von Delphi sein, sondern ein "Word-Sicherheitsproblem" . Und Du kannst noch froh sein, daß du überhaupt ein Fenster in Word aufpoppen siehst, das ist nicht immer so :-)

Probier mal das hier:
http://support.microsoft.com/default...b;en-us;825765

Gruß Frank

Overclocker 3. Aug 2008 11:01

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
das mit dem einen fenster habe ich hier schon gelesen, wo der SQL Command etc. steht

problem bei mir ist aber, dass nicht dieses fenster kommt, sondern das fenster wo ich die TABELLE selber wählen kann.

d. h. wenn ich die tabelle wähle dann macht word selber n select * from [tabelle] befehl und mein im delphi programm zusammengesetzter query funktioniert überhaupt nicht mehr.

darum geht es mir und da muss es doch ne möglichkeit geben, nur bestimmte datensätze an den serienbrief zu übergeben :(

rotfc 3. Aug 2008 11:15

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
Nochmal zum Mitlesen: An Word eine mit Access generierte Auswahlabfrage schicken!

Overclocker 3. Aug 2008 11:37

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
kann mir vllt jemand mal sagen was rotfc damit meint :)??

in meinem code muss ich selbst die sql abfrage eingeben da kann ich schlecht eine von access hernehmen

rotfc 3. Aug 2008 12:24

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
Sag's doch so, wie es ist:

Du möchtest mit Word Serienbriefe erstellen, wobei die Empfängeradressen in einer Access-Datenbankdatei (.mdb) gespeichert sind.

Und Du möchtest mit Deinem Delphi-Programm Word so "ansteuern", daß Word aus der Access-Datenbankdatei nur die Empfänger auswühlt, die Du haben möchtestes?

Also Du möchtest mit Delphi ein Programm achreiben, welches Word als "Front-End" für Access-Abfragen benutzt?

Oder wie oder was? :drunken

Ansonsten fände ich nicht gänzlich überflüssig, von Dir ein pssr zusätzliche Informationen zu bekommen ;-)

- Welche Version von Windows
- Welche Version von MS-Office
- Welche Version von Delphi

Da lässt sich noch viel überdenken :cheers:

Overclocker 3. Aug 2008 12:46

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
Also Du möchtest mit Delphi ein Programm achreiben, welches Word als "Front-End" für Access-Abfragen benutzt?

Genau richtig, ich möchte sozusagen die SQL Abfrage an Word übergeben, welches sich dann alle Empfänger aufgrund der SQL Abfrage ermittelt.

- Welche Version von Windows: Windows XP
- Welche Version von MS-Office: Office 2003
- Welche Version von Delphi: Delphi 6 Enterprise

Ich hoffe das genügt, dachte es wäre nur eine kleinigkeit im quellcode um das problem zu beseitigen.

danke für deine hilfe schon mal :)

Overclocker 3. Aug 2008 17:58

Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
 
keiner eine idee??

ich find auch nix bei google wie man einen QRY an word übergeben kann :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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