PDA

Vollständige Version anzeigen : Serienbrief in Word mit Daten aus ACCESS


FH
26.11.2000, 02:30
Hallöle,

ich will aus einer Access-DB mit zwei Tabellen mit 1:n-Beziehung Serienbriefe erstellen. Wie erreiche ich, daß je Empfänger eine Seite gedruckt wird, die dann aber n Zeilen mit Einzelpositionen hat?

Dank & Grüssle

Horst Schulte
26.11.2000, 18:12
<table border="1" bgcolor="#FFDCAD" align="center"><tr><td><font size="2">Hallo,

ich glaube nicht, dass das geht. Aber Du kannst es natürlich über Access lösen. Leg doch einfach ein entsprechendes Dokument als Bericht an. Du kannst vielleicht das Layout sogar unter Word gestalten und es im Access-Bericht benutzen.

Grüße
Horst
</font></td></tr></table>
<p align="center"><a href="http://www.horst-schulte.de"><img border="0" src="http://www.horst-schulte.de/logo_hs.gif" alt="Horst Schulte's Portal für Bürohengste">

[Dieser Beitrag wurde von Horst Schulte am 26.11.2000 editiert.]

FH
27.11.2000, 01:59
Hallo Horst,

danke für den Hinweis. Ich hatte aber gehofft, diesen Weg zu umgehen. Berichte in Access sind nicht gerade bequem zu pflegen und wenn es dann noch zum corporate design passen muß... In Word könnte ich gleich die vorhandenen Vorlagen benutzen.

Grüße
Frank

CrazyHorse
28.11.2000, 03:35
Die beiden Tabellen lassen sich am besten über eine SQL-Abfrage zusammenführen:
Dim Word As Object
Dim dbs As Database, rstdeinSQLErgebnis As Recordset
Dim qd As QueryDef

Set dbs = CurrentDb()
Set qd = dbs.QueryDefs("DeineAbfrage")
qd.Parameters("ParameterdeinerAbfrage") = Forms!Kunden!KundenNummer(das wars bei mir)
Set rstdeinSQLErgebnis = qd.OpenRecordset()

If rstVertragfelder.RecordCount = 0 Then
DisplayMessage "Abfrage liefert kein Ergebnis, ist leer."
Exit Sub
End If

Einfügen des Abfrageergebnisses in Word
Du musst Word starten mittels VBA
und dann einfügen in dein Dokument
With Word.Selection
.Goto wdGoToBookmark, Name:="Name1"
.TypeText Text:=rstdeinSQLErgebnis!NamederSpalte.Value
usw...
End With
Bookmark ist die Textmarke in deinem Word Dokument
Probleme kann es noch bei der Übergabe von Currency-Variablen geben. Wenn das bei dir der Fall ist, bescheid sagen
Auf die Art habe ich es gemacht , ich hoffe nur das war die Antwort auf deine Frage :-)

FrankH
23.07.2001, 14:48
Hallöle,

ich hatte es erstmal anders gelöst, aber es holt einen alles wieder ein...
Falls noch jemand dieses Problem hat:
Einen guten Hinweis gibt es direkt bei Microsoft:
http://support.microsoft.com/support/kb/articles/Q131/5/83.asp

Darin ist erstmal die Übergabe an Word sehr gut und detailliert beschrieben.
Die 1:n-Beziehung für die Serienbriefe habe ich dann in der Art realisiert, daß ich zwei verschachtelte loops über zwei Abfragen mache: loop über Abfrage der Kunden, darin loop über die Lieferscheine zum jeweiligen Kunden.
"Kritisch" ist erst die Übergabe der n Lieferscheine zu jedem Kunden. Im inneren loop (Lieferscheine) wird dann für jedes Tabellenfeld eine eigene Strinvariable angelegt (z.B. strLieferscheinNr, strLieferscheinDatum etc.) und mit jedem Datensatz um das entsprechende Feld ergänzt [strLieferscheinNr = strLieferscheinNr & rstL!LieferscheinID.Value & Chr(10)]. Am Ende des inneren Loops werden alle Variablen an Word übergeben und das Dokument wird gedruckt. Dabei ist wichtig, daß in Word die Tabelle der Lieferscheine über Spalten dargestellt wird und in jeder Spalte ein bookmark ist.

Das war jetzt eine "mustergültige" Erklärung. Der Code ist aber recht umfangreich - also bei Bedarf bei mir melden.

Frank