PDA

Vollständige Version anzeigen : OLE-Inhalt eines Feldes in einem Bericht per VBA aktualsieren


Silberjäger
27.09.2005, 14:40
Hallo liebe Access Fangemeinde!

Leider bin ich nach vielem Suchen und Probieren noch zu keinem Ergebnis gekommen. Erhoffe dahr mit diesem Thread Erleuchtung zu erlangen :rolleyes:

Ich abe einen Bericht, welcher ein OLE-Feld besitzt, dessen Datenherkunft (Word-Files) ich per VBA setzen will und der Bericht daher einen individuellen Inhalt hat.

Reports![B_Reparaturauftrag].[OLEDokument].SourceDoc = vDokument

Der Code setzt zwar den Wert, aktulasiert aber nicht die Darstellung. Ein Requery oder so mag er auch nicht so.

Wie könnts gehen?

Besten Dank
Manfred

Smaug
27.09.2005, 14:50
versuch mal den Pfad zum Word-Dokument in eine globale Variable zu schreiben; z.B. glbWordDoc (global in einem öffentlichen Modul als String deklariert) und als Datenherkunft für den Bericht eine Abfrage zu verwenden mit dieser Variable als Kriterium (über eine Funktion):
Public Function fctMeinWordDoc()As String
fctMeinWordDoc = glbWordDoc
End Function
In der Abfrage wird dann mit fctMeinWordDoc auf die Funktion und somit auf den Inhalt der globalen Variable verwiesen. Vor dem Öffnen des Berichts wird die globale Variable zugewiesen und dann der Bericht mit der OpenReport-Methode geöffnet

Großer Meister
27.09.2005, 14:53
das ist unabhängig vom OLE-Feld. Einen Bericht kannst nicht aktualisieren.
Dazu musst du den Bericht schon neu aufrufen oder stattdessen ein Formular benutzen.

Silberjäger
27.09.2005, 15:30
Also bin ich sozusagen an die Grenzen von Access gestossen. Das mit dem Formular stell ich mir auch nicht so professionell vor.

Werde die relevanten Daten nach Excel exportieren und über VBA einen Seriendruck mit Word anstossen. Das hab ich schon mal ausgearbeitet und brauch es nur anzupassen.

Da werde ich auch die Textbausteine dann handlen können.

besten Dank
Manfred

Großer Meister
27.09.2005, 16:01
nö ist keine Grenze von Access. Berichte sind nur nicht zum bearbeiten gedacht, dafür gibt es ja Formulare, die kann man ja wenn man möchte grafisch genauso gestalten, wenn man möchte. Es gibt fast immer tausende von Möglichkeiten in oder mit Access.

Nouba
27.09.2005, 23:56
Kass Dich nicht verschaukeln :) <a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B202056&x=15&y=14">ACC2000: Creating an Updatable Unbound Word Object on a Report</a>

Santalino
28.09.2005, 01:21
Mit der OLE-Bericht-Aktualisierungfrage habe ich mich früher auch schon beschäftigt.

OLE-Felder lassen sich im Bericht nur in der Entwurfansicht ändern. Das ist praktisch auch die Vorgehensweise von Nouba's link. Das Problem ist, wenn ich z. B. einen Bericht mit 50 Kunden-Datensätze habe und für jeden Kunden unterschiedliche OLE-Felder benötige dann muß man dafür wirklich umständliche Schleifenlösungen basteln (1 DS drucken, Entwurfansicht gehen, OLE-Feld aktualiseren, Speichern, zum nächsten DS gehen, drucken...oder die Datenquelle so anpassen dass immer nur 1 DS vorhanden ist und dann den Bericht mit einer Schleife 50 mal aufrufen und in der Schleife zusätzlich die Datenquelle anpassen das dort immer der nächste DS vorhanden ist). Zusätzlich sind OLE-Aktualisierungen verhältnismässig langsam. und bei mde-Datenbanken geht diese Lösung gar nicht da, man ja nicht mehr in die Entwurfsansicht kommt.

Ich habe meine Entwicklungen dann auschl. mit Word-Vorlagen mit Textmarken und/oder Seriendruckfelder umgesetzt die ich von Access über OLE anspreche. Komplexe Formatierungen sind in Berichten auch schwerer bzw. extrem umständlich möglich. Es fängt schon damit an, wenn ich einen Textbaustein im Bericht benötige der zum Teil einen fixen Text hat und zum Teil aus variablen Inhalten der Datenquelle besteht und ich innerhalb von diesem Text Teile mit fetter Schrift, größere Schrift oder unterschiedlichen Zeilenabständen haben möchte. In Word sind diese Formatierungen viel einfacher zu machen.

Ergänzung: @ Siberjäger: Für deine Lösung mit Serienbrief brauchst du nichtmal die Daten von Access nach Excel exportieren. Man kann auch einfach im Word-Serienbrief als Datenquelle eine Access-Tabelle oder Abfrage hinterlegen.