Hallo zusammen,
ich benutze ein älteres Programm, dessen Daten in einer Datenbank gespeichert werden. Die Ausgabe erfolgt in ein Worddokument bzw. div. RTF-Dateien. Das Übergabeformat ist xml.
Da ich das Programm mittelfristig nicht mehr nutzen kann, habe ich es in abgespeckter Form in Access 03 selbst programmiert. Der erste Teil (Tabellen, Abfragen u. Formulare) ist soweit fertig.
Aufgrund der flexiblen Formatierung u. Textbearbeitung möchte ich das Word-Format (2003) beibehalten. Ebenso kommen in Word sehr viele Tabellen mit Gitternetzen zum Einsatz. Evtl. kann man die bestehenden RTF-Vorlagen weiter benutzen.
Die übliche Ausgabe über Berichte scheidet vermutlich aus. Ich habe ähnliches bereits mit der Exportfunktion im Textformat in RTF-Dateien praktiziert, da es relativ einfach ist.
Welche Vor- u. Nachteile hat denn der Text-Export im Gegensatz zum xml-Export oder anderen Exportmöglichkeiten? Ich muss allerdings dazu sagen, dass ich bisher von xml keine Ahnung habe.
Vielen Dank vorab.
Gruß
Max
ZitatDas Übergabeformat ist xml.
XML-Fähigkeiten kommen erst ab Acc2007 und höher, falls Du dort fortsetzen willst.
Zum Vergleich Text-XML müsste man sich in konkrete Anforderungen bei Dir hineinverarbeiten. Die Nutzung von XML ist aber unter Zugrundelegung von Forumsanfragen noch sehr rudimentär und von nicht sehr vielen beherrscht.
XML bietet ja eine Eigenstrukturierung von Daten an. Das hat Vorteile (Plattformunabhängigkeit), aber schon mal den Nachteil von höherer Komplexität, die beherrscht werden will.
Text ist dagegen leicht lesbar, mit einer CSV (Texttabelle) hat man auch schon übersichtliche Datenstrukturen. Für die Übertragung von Daten ist Text also generell und schon immer gut geeignet.
Wege zur Datenübergabe:
- Serienbrieffunktionalität: Von einer Briefvorlage leitet man ein Dokument mit Platzhaltern für Daten ab, die Daten werden dann aus einer bereitgestellten Tabelle (Text, Excelblatt, DB-Abfrage) übernommen.
- Innerhalb VBA-Prozedur Zuweisung von Einzeldaten an Textmarken im Worddokument.
- Man kann auch ganze Tabellen aus Access heraus im Worddokument erzeugen, siehe Wordtabelle aus Access füllen (https://www.ms-office-forum.net/forum/showthread.php?t=221556)
Problem in den genannten Fällen ist, dass jeweils nur Inhalte = Daten übertragen werden, zu den nötigen Formaten muss man eigene Funktionalitäten haben und anwenden und nachformatieren.
Hier wären neben dem nachvollziehbaren erneuten Durchlauf (Formatierung statt Inhalt) auch Methoden in Word direkt sinnvoll anwendbar, also z.B. Formate in Word definieren und nach Datenübertragung gezielt auf die nötigen Bereiche anzuwenden.
Selbstredend wird man auch an Wordvorlagen mit fertigen Formatierungen denken, in die man Inhalte hineinbringt und dabei die vorhandenen Formatierungen möglichst nicht zerschießt.
Hallo Eberhard,
danke für eine Antwort.
Okay, wenn selbst ihr Experten nicht so richtig von xml überzeugt seid,
dann werde ich das wohl wegen der Komplexität vergessen.
Nachdem ich etwas ausprobiert habe, werde ich wahrscheinlich eine Mischung
aus ganzen (Endlos-)Tabellen über Export im RTF-Format und Einzeldaten im Fließtext
über die Serienbrieffunktion in Word realisieren. Diese ist recht einfach zu bedienen.
So spare ich mir viel VBA-Programmierung.
Da jede eingefügte Tabelle und jeder "Serienbrief" aus einer AC-Tabelle
bzw. -Abfrage besteht, wird es einen Haufen Wordschnipsel geben,
die dann wieder in ein Hauptdokument eingefügt werden müssen.
Leider scheint das Einfügen dieser Schnipsel nur zu funktionieren,
wenn vorher die Feldverknüpfung aufgehoben worden sind.
Vorteil der Tabellen im RTF-Format ist, dass die Tabellen schon ganz ordentlich aussehen
und in Word noch formatiert werden können.
Vorteil der Serienbrieffunktion (hier als Verzeichnis) ist, dass das Format nur einmal
in der Wordvorlage definiert wird.
Eine Frage bleibt noch: Kann ich beim Exportieren ganzer Tabellen die Auswahl der Felder z.B. per VBA einschränken? ID-Felder, etc. kann ich im Dokument nicht gebrauchen.
Hast Du noch einen Tipp?
Gruß
Max
Dass die Methoden miteinander kombinierbar sind, hast Du ja schon bemerkt.
Generell wäre es mein Bestreben, eine Auswahl danach zu treffen, dass mit einer Methode möglichst viel möglichst in einem Schritt erledigt werden kann - Massendatenverarbeitung statt vieler Einzelmaßnahmen.
In dem verlinkten Beitrag ist auch ein Beispiel zu ConvertToTable (Word-Methode) vorhanden.
Da erzeugt man aus einer Accesstabelle/-abfrage ein Recordset und wandelt es mit dieser Methode in eine Wordtabelle um und fügt letztere an einer Textmarke im Dokument ein. Mit einem hinterlegten Wordformat kann dann das Pur-Design der Einfügung den eigenen Wünschen bzw. einem Corporate Design angepasst werden.
Wenn man das als Programmteile beherrscht, kann man sicherlich ganz gut mit vielen und unterschiedlichen Tabellen und also ganz variabel arbeiten bei dann trotzdem einem übersichtlichen Ablauf.
Da ich generell die Steuerung des Ganzen aus Access vornehmen würde (die Umsetzung der Serienbrieffunktionalität auch schon), könnte man dann auch die "Wordschnipsel" über eine Textbausteinverwaltung zusammensetzen, mit sich und mit Tabellen.
Insgesamt brauchst Du also eine Übersicht über alle zu erzeugenden Dokumente, um einordnen zu können, was man aus Vorlagen und Serienbrief statisch vorbelegen kann und was dann individuell zu ergänzen ist, um Methoden und deren Reihenfolge auszuwählen.
Exportieren ganzer Tabellen: Erstelle eine Abfrage mit nur den benötigten Feldern. Die lässt sich genau so exportieren wie eine Realtabelle. Dann hast Du, was Du brauchst. Man kann dort auch zusätzlich sortieren, filtern, Inhalte mehrerer Tabellen kombinieren usw., also db-mäßig alles aufarbeiten.
Zitat von: ebs17 am September 05, 2022, 17:27:07Exportieren ganzer Tabellen: Erstelle eine Abfrage mit nur den benötigten Feldern. Die lässt sich genau so exportieren wie eine Realtabelle. Dann hast Du, was Du brauchst. Man kann dort auch zusätzlich sortieren, filtern, Inhalte mehrerer Tabellen kombinieren usw., also db-mäßig alles aufarbeiten.
Geht das auch nur mit VBA, so dass ich nicht extra eine echte Abfrage erstellen muss?
Klar, ein Recordset kann genauso gut mit einer SQL-Anweisung erzeugt werden, und eine SQL-Anweisung kann man live per VBA zusammenbauen.
db.CreateQueryDef ... wäre eine Methode, eine gespeicherte Abfrage per VBA zu erstellen - also da ist viel Spielraum für eigenes Tun. Manche Exportmethoden erfordern Objekte, also gespeicherte Abfragen statt nur SQL-Anweisungen.
db.QueryDefs("NameAbfrage").SQL = "SELECT ..."
... wäre eine Methode, die Abfragedefinition einer bestehenden gespeicherten Abfrage zu ändern.
Zitatechte Abfrage erstellen
... ist aber auch weniger schlimm als eine zusätzliche Tabelle mit dann redundanten Daten. Die Abfrage ist ja nur eine Definition, welche Daten wie zusammenzustellen sind, also ein Stück Code als Objekt (wenn man von nicht selbst beeinflussbaren Anteilen wie einem gespeicherten Ablaufplan bei einer gespeicherten Abfrage absieht).