![]() |
Serienbrief Datenbank-Tabelle wird nicht übermittelt??
Hi,
folgender code erzeugt mir einen Serienbrief:
Delphi-Quellcode:
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.
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; Mit folgendem Code habe ich es auch schon versucht allerdings erscheint immer wieder das Fenster:
Delphi-Quellcode:
Wird die Tabelle an einer falschen Position übergeben oder warum nimmt er den Select Befehl nicht an?
word.ActiveDocument.MailMerge.OpenDataSource(DBQuelle,'SELECT * FROM Profil');
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 |
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. |
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 :( |
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: ![]() Gruß Frank |
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 :( |
Re: Serienbrief Datenbank-Tabelle wird nicht übermittelt??
Nochmal zum Mitlesen: An Word eine mit Access generierte Auswahlabfrage schicken!
|
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 |
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: |
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 :) |
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 04:47 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 by Thomas Breitkreuz