Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Bericht mit dynamischen Spaltenüberschriften (Kreuzwert-Abfragen)

Begonnen von Holger69, März 10, 2021, 10:33:03

⏪ vorheriges - nächstes ⏩

Holger69

Liebe Leute,
ich komme hier mit einem Thema um die Ecke, für das ich trotz intensiver Recherche (auch hier) leider keine Lösung gefunden habe.

Zum Hintergrund: Ein Labor erhält von Kunden (über Tickets) Proben, in denen verschiedene chemische Stoffe analysiert werden. Es ist also eine ganz simple, mehrfache 1:n-Matroschka (Kunden->Tickets->Proben->Analysen)
Der Kunden soll seine Analysenergebnisse dann aufgehübscht und druckbar in einem Bericht als PDF/E-Mail erhalten.

Für das Abfragen der Analysenergebnisse habe ich mich einer Kreuzwerttabelle bedient. Vielleicht lag ja hier schon der Fehler in der Vorgehensweise und es gibt Alternativen dazu??
Dank Donkarl's 3.18 werte ich die kundenspezifischen Analysenergebnisse treffsicher aus Sie dürfen in diesem Board keine Dateianhänge sehen. - oben die Ergebnisse mit Historie von dem einem Kunden, unten von einem Anderen. Die Frage ist nun, wie ich von diesem Punkt aus zu meinem Bericht komme.

Im Artikel "https://access-im-unternehmen.de/Kreuztabellen_in_Berichten" wurde das Problem mit den dynamischen Spaltenüberschriften im Bericht so gelöst, dass die Steuerelemente für die Spaltenüberschriften immer frisch in eine Berichtsvorlage eingesetzt werden, welche beim nächsten Durchgang wieder geleert und neu/anders bestückt wird. Leider steht die Beispieldatei "KreuztabellenInBerichten.mdb" nicht (mehr?) zum Download zur Verfügung (Autor bereits angefragt) Also habe ich versucht mit Hilfe des Artikels die Datei nach zu basteln Sie dürfen in diesem Board keine Dateianhänge sehen. um im Verlauf die dortige Vorgehensweise auf mein eigentliches Problem anwenden zu können. Die Berichts-Vorlage leeren und neu erzeugen hat geklappt, aber den Code für die Befüllung der Vorlage mit den Steuerelementen bekomme ich einfach nicht gesetzt, obwohl das Listing im Artikel abgedruckt ist.

An dieser Stelle hänge ich nun und es wäre prima, wenn
- jemand zufällig die ursprüngliche Beispieldatei noch irgendwo rumliegen hat
- jemand weiß, wie der im Artikel beschriebene Code richtig zu setzen ist
- jemand eine andere Idee hat, wie man ausgehend von einer Kreuztabelle ein ansprechendes Berichtsdesign erzeugt.
- jemand weiß, wie man ganz ohne Kreuztabelle das Problem gelöst bekommt.

Ich hoffe, dieser "jemand" mag sich die Zeit nehmen, um mich hier einen Schritt weiter zu bringen.

Viele Grüße in die Runde,
Holger



ebs17

Lösungen und Diskussionen findest Du mit den Stichworten "ms access crosstabreport" über eine Suchmaschine eigener Wahl.

Solche Dynamik ist allerdings regelmäßig sehr anstrengend:

- DesignView und CreateReportControl wären nur in einer ACCDB umsetzbar, nicht in einer weiterzugebenden ACCDE.
- Dem könnte man noch  begegnen, wenn man ausreichend Controls unsichtbar vorhält und dann nur bei Bedarf sichtbar stellt und platziert. Allerdings ist ein Bericht sachlich eine Druckausgabe und an Papierformate gebunden, da kann man also nicht frei dynamisch Felder nebeneinander setzen.

Sehr viel entspannter könnte man arbeiten, wenn man sich im Bericht eine feste darstellbare Menge an Pivotspalten vorgibt, in der Kreuztabellenabfrage mit fixierten Spaltenüberschriften arbeitet und beides in Übereinstimmung bringt.

Daher würde ich wohl am Anfang analysieren, wieviele Dinge da insgesamt und pro Probe oder pro Ticket zu messen sind, ob es da Abhängigkeiten gibt (feste Diagnosen, abhängig vom Ticket, vom Kunden usw.), so dass man vielleicht mit drei, vier statischen Berichten gut arbeiten könnte.
Mit freundlichem Glück Auf!

Eberhard

Holger69

Hallo Eberhard,

vielen Dank für Deine Antwort. Es wird wohl nicht ohne erheblichen Aufwand zu bewerkstelligen sein, soviel habe ich nun auch schon erfahren und recherchieren können. Es gibt eine ganze Menge Anleitungen, die sich allerdings hauptsächlich um eine zeitliche Darstellung, also Monats- oder Jahresspalten, drehen. Kaum tauglich für meine Zwecke. Ohne Filter erwarte ich in meinem Fall rund 200 Spalten, die sich - je nach Filter auf 2 bis 10 reduzieren. Feste Regeln für fixierte Spaltenüberschriften gibt es nicht, da die Kombinationsmöglichkeiten zu vielfältig sind.

Im Moment behelfe ich mir mit einem riesigen, inaktiven Listenfeld über die gesamte Berichtsbreite (Querformat), in welchem die gefilterte Kreuztabelle angezeigt wird. So habe ich wenigsten eine simple Form der Anzeige erreicht, wenngleich naturgemäß nur das formatiert werden kann, was ein Listenfeld eben an Formatierungen zulässt. Eine Zwischenlösung bis die eigentliche VBA-Arbeit erledigt ist *schwitz*

ebs17

ZitatFeste Regeln für fixierte Spaltenüberschriften gibt es nicht
Man könnte da mit laufenden Nummern arbeiten: Erzeugen und vor potentielle Spaltenüberschrift setzen. Das bringt einen in die Nähe, mit Reihenfolgen (Feld01, Feld02, ...) zu arbeiten und diese zu nutzen.

Zitat200 Spalten
Wenn ein Kunde das volle Programm (ungefiltert) nimmt, hätte man bei einer einzigen Tabelle auch ein Darstellungsproblem wegen der begrenzten Blattbreite eines druckbaren Dokumentes. Da bräuchte man eigene Regeln für eine Zerlegung.

Problem sind ja bei Formular/Bericht, dass die Felder nicht nur vorhanden sein müssen, sondern immer eine fest zugeordnete ControlSource haben. Da müsste man also darüber gehen und das anpassen, zusätzlich auch die Feldtitel.

Wenn jetzt die Ausgabe eigentlich in ein PDF erfolgt, könnte man sich vielleicht als einfacher beherrschbare Alternativen anschauen, seine Tabelle in ein Excel-Arbeitsblatt oder in ein Worddokument auszugeben.
Für Excel hätte man als Methode CopyFromRecordset, für Word ConvertToTable, beides aus einem Recordset auf die Abfrage heraus. Die Titelzeile geht eh als einfache Schleife raus, so wie sie ist.
Wenn man in beiden Fällen auf eine Vorlage zurückgreift, wo das Drumherum schon mal fertig ist und man nur die Tabelle(n) einträgt und ggf. nachformatiert, könnte man auch dort eine PDF-Ausgabe nachsetzen.

Für Word: Demo-Datenbank - Wordtabelle aus Access füllen (ist eines meiner frühen Werke, einiger Code kann verbesserbar sein).
Gerade mit Word hättest Du exquisite Formatierungsmöglichkeiten.
Mit freundlichem Glück Auf!

Eberhard

Holger69

Hallo Eberhard,
sorry, für die verspätete Antwort und erst einmal vielen Dank für Deine Anregungen.
Ich habe mehrfach versucht, die Daten nach Word oder Excel zu schicken, um sie dort weiter zu verarbeiten. So richtig glücklich war ich mit den Ergebnissen aber nicht.

Geholfen hat hier tatsächlich nur die vielzitierte "Rogers Access Library" und  der - ja, ich gebe es zu - geistige Diebstahl des Codes aus der dort erhältlichen Beispiel-Datenbank (CrossTabReport)

Mein Bericht sieht zumindest optisch nun so aus, wie ich ihn prinzipiell haben möchte.
Sie dürfen in diesem Board keine Dateianhänge sehen.
Aber es war schon wirklich Aufwand. Außer dem Kopf enthält er insgesamt 6 übereinandergestapelte Unterberichte, in welchen jeweils eine spezifische Kreuztabelle mit ihren individuellen Spaltenköpfen aufgebaut wird. Die Breite eines DIN-A4 Blattes lässt 13 Felder auf einer Seite zu, was für meine Zwecke in der Regel mehr als ausreichend ist. Das ließe sich aber ja noch beliebig erweitern. Der Rest ist jetzt noch ein bisschen Fein-Tuning (bedingte Formatierung etc.) und dann sollte es passen.

Ich bin aber froh über Deine Ideen und Hinweise.
Alles Gute, viele Grüße und schöne Ostern!
Holger