Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access-Bericht aus Recordset





Frage

Hallo zusammen, Ich hoffe Ihr könnt mir eine Hilfestellung zu meinem Problem geben. Ich habe verschiedene Access-Berichte (Statistiken), die alle denselben Aufbau und diesselbe Struktur, Sortierung aufweisen. Sie bestehen aus Hauptbericht mit 3 Unterberichten, wobei die Unterberichte auf 3 unterschiedlichen Queries bestehen (1. Gruppierung/Anzahl Total, 2. Gruppierung/Anzahl nach Jahrgang,3. Gruppierung/Anzahl nach Geschlecht). Die Statistiken basieren auf unterschiedlichen Daten (verschiedene Tabellen). Ich habe jetzt für jede Auswertung der Fragen/Tabellen 1 Hauptbericht, 3 Unterberichte, 1 Query Hauptbericht und 3 Querys Unterbericht... und dies für schlussendlich etwa 15 Verschiedene Auswertungen !! Meine Idee mit VBA: nur eine Defininition der Berichte und der Unterberichte. Daten in ein Recordset einlesen und Bericht ausgeben. Bei dem Einlesen des Recordsets würde ich jeweils die Datenquelle ändern (Einlesen der Abfrage in Recordset ), Bericht müsste auf Datenfelder des Recordsets definiert werden?! Geht das und wie - oder bin ich auf dem Holzweg? Danke für Eure Bemühungen Urs

Antwort 1 von oliverV

Hallo Urs,

ähnliches Thema hier.

Mit einem Recordset würde ich mich nicht herumschlagen, mein Ansatz währe ein ähnlicher.
Beim Öffnen des Berichts kannst du dem Bericht eine neue Datenherkunft zuweisen (als SQL-String), verwende dazu die RecordSource-Eigenschaft.

Ich gehe mal davon aus, das du dir irgendein Auswahlformular basteln wirst; wenn der Bericht nun geöffnet wird, musst du das Kriterium aus dem Formular auslesen und endsprechend die gewünschte Datenherkunft setzten (deine Abfragen benötigst du dann gar nicht mehr).
Packe die verschiedenen Varianten in eine Select-Case-Anweisung.

Mit einem normalen Bericht habe ich das schon mehrfach gemacht, allerdings noch nicht mit HB/UB, dürfte aber auch klappen.

Vielleicht kannst du was mit dem Ansatz anfangen.

Gruß

Oliver

Antwort 2 von Urs

Hallo Oliver,

Besten Dank für deine Hinweise, ich werde mich mal an die RecodSource-Eigenschaft ranwagen.
Im Gegensatz zum anderen Thread ist der Bericht im Aufbau völlig identisch, nur die Datentabelle ist anders.

Schlussendliche Idee von mir wäre mit einer Schaltfläche alle verfügbaren Auswertungen oder ein Formular zum anklicken der vorhandenen Reports in einer Schlaufe auf den Drucker zu geben und dabei mit FreePDF eine einzige PDF-Datei mit x Seiten erzeugen.
Gruss
Urs

Antwort 3 von Urs

Hallo Oliver und alle anderen lieben Helferlein,

Ich habe die RecordSource-Eigenschaft im Help angeschaut, aber leider nichts begriffen.

Hat mir jemand ein Beispiel mit einem Select, Aufruf des Berichtes? Wie sind die Felder im Bericht definiert? Normalerweise zeigen die auf ein Query und ein entsprechendes Feld (mit dem entsprechenden Namen), wie kann oder muss ich das übersteuern?

Bestem Dank für Eure Hilfe.
Urs

Antwort 4 von oliverV

Hallo Urs,

ich habe deine Pager-Nachricht erst heute morgen gesehen, unabhängig davon hatte ich aber letzte Woche mal etwas gebastelt, aus reinem Interesse.
Ich hab´s dann aber ins Daten-Nirwana befördert (Zeit- und Lust-Gründe).

Das Problem das dabei auftauchte waren die verschiedenen Unterberichte, wie ich bereits ahnte.
Die Datenherkunft des Hauptberichts "Beim Öffnen"-Ereignis zu verändern ist kein Problem, wenn ich das Gleiche jedoch mit den UBs versuche funktioniert das nicht mehr.
Da der UB sich im HB befindet und dieser erst nach dem Öffnen des HB geöffnet wird, lässt Access keine Änderung der Datenherkunft mehr zu (der Bericht wird als bereits gedruckt interpretiert).
Eine identische Konstellation bei Formularen wäre kein Problem, da würde man einfach ein Requery hinterherschieben, bei einem Bericht funktioniert das natürlich nicht.

Falls du dennoch eine kleine Beispiel-DB zur Veränderung der Datenherkunft haben möchtest, kann ich noch mal etwas basteln, benötige dann natürlich deine E-Mail-Adresse und Access-Version (per Pager).

Zur Problemlösung:
Ein anderer Ansatz, ändere nicht die Datenherkunft, sondern ändere die Daten.
Erstelle 4 temporäre Tabellen (1 x für HB, 3 x für UB), die als Grundlage für deinen Bericht dienen.
Mit deinem Berichts-Auswahlformular "befüllst" du diese Tabellen mit Anfügeabfragen die du nacheinander ausführst bevor du diesen Bericht öffnest.
Je nach Datenmenge kann es dabei zu ganz minimalen zeitlichen Verzögerungen kommen; der echte Nachteil ist, das sich die DB unnötig "aufbläht", du solltest also öfters komprimieren.
Vor dem Ausführen der Anfügeabfragen musst du dann erst Löschabfragen ausführen, um die letzten Tabelleninhalte zu löschen.

Alternativ zu den (gespeicherten) Anfügeabfragen, kannst du in VBA mit RunSQL arbeiten, den String kannst du dir dann flexibel zusammensetzten.

Wenn Beispiel gewünscht, melde dich (kann aber bei mir "einen Moment" dauern).

Gruß

Oliver

Antwort 5 von Urs

Hallo Oliver,

besten Dank für deine Bemühungen und dein Interesse.

Du hast recht, ich glaube das mit den Tabellen ist die beste Variante. Und damit ich die ganze Geschichte nur noch einmal ändern muss, möchte ich dies auch ganz in VBA machen.
Nochmals, danke
Gruss
Urs

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: