{"id":55001255,"date":"2020-10-01T00:00:00","date_gmt":"2020-10-02T09:01:25","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1255"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Unterberichte_ein_und_ausblenden","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/","title":{"rendered":"Unterberichte ein- und ausblenden"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/14b0530367d34e31b4f0d23562f56687\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Unterberichte bergen oft spannende Herausforderungen in sich &#8211; vor allem, wenn die Inhalte sich &uuml;ber mehr als eine Seite erstrecken. Die Aufgabe, die ein Leser mir diesmal stellt, hatte allerdings einen anderen Charakter: Er w&uuml;nschte sich, dass die Benutzer einzelne Unterberichte je nach Anforderung aktivieren oder deaktivieren konnten. Wir suchen also eine M&ouml;glichkeit, um festzulegen, welche von verschiedenen Unterberichten im Hauptbericht angezeigt werden und welche nicht. Wie das gelingt, zeigt der vorliegende Beitrag.<\/b><\/p>\n<p><b>Unterberichte ein- und ausblenden<\/b><\/p>\n<p>Im ersten Schritt wollen wir uns ansehen, ob sich Unterberichte &uuml;berhaupt ein- und ausblenden lassen. Dazu erstellen wir vier Unterberichte, die wir einfach <b>rptUnterbericht1<\/b>, <b>rptUnterbericht2<\/b>, <b>rptUnterbericht3 <\/b>und <b>rptUnterbericht4 <\/b>nennen.<\/p>\n<p>Diese sollen jeweils nur einen Detailbereich mit einem Bezeichnungsfeld enthalten, das den Namen des Unterberichts angibt &#8211; siehe Beispiel f&uuml;r den Bericht <b>rptUnterbericht1 <\/b>in Bild 1.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_001.png\" alt=\"Einer der vier Unterberichte\" width=\"549,6265\" height=\"175,7587\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Einer der vier Unterberichte<\/span><\/b><\/p>\n<p>In einen Hauptbericht namens <b>rptHauptbericht <\/b>f&uuml;gen wir dann die Unterberichte im Detailbereich ein. Das Ergebnis sieht wie in Bild 2 aus. Damit k&ouml;nnen wir nun herausfinden, ob sich die Unterberichte &uuml;berhaupt auf einfache Weise ein- oder ausblenden lassen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_002.png\" alt=\"Hauptbericht mit den vier Unterberichten\" width=\"549,6265\" height=\"442,5566\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Hauptbericht mit den vier Unterberichten<\/span><\/b><\/p>\n<p>Wenn wir nun in die Seitenansicht wechseln, erscheinen die vier Unterberichte genau so, wie wir sie angeordnet haben (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_003.png\" alt=\"Anzeige aller vier Unterberichte\" width=\"424,7115\" height=\"341,9756\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Anzeige aller vier Unterberichte<\/span><\/b><\/p>\n<p><b>Unterberichte ausblenden<\/b><\/p>\n<p>Wir beginnen mit dem statischen Umstellen der Sichtbarkeit eines der Unterberichte, indem wir die Eigenschaft <b>Sichtbar <\/b>des zweiten Unterbericht-Steuerelements namens <b>rptUnterbericht2<\/b> auf <b>Nein <\/b>einstellen und &ouml;ffnen den Bericht in der Seitenansicht.<\/p>\n<p>Das Ergebnis sieht wie in Bild 4 aus und ist noch nicht zufriedenstellend.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_004.png\" alt=\"Der zweite Unterbericht wurde ausgeblendet.\" width=\"424,7115\" height=\"341,9756\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Der zweite Unterbericht wurde ausgeblendet.<\/span><\/b><\/p>\n<p>Der Unterbericht wird einfach ausgeblendet, aber es bleibt eine leere Stelle, an der sich der ausgeblendete Unterbericht befindet.<\/p>\n<p><b>Leerraum verhindern<\/b><\/p>\n<p>Um den leeren Zwischenraum zwischen dem ersten und dem dritten Unterbericht zu verhindern, stellen wir die Eigenschaft <b>Verkleinerbar <\/b>des Unterbericht-Steuerelements <b>Untergeordnet2 <\/b>auf <b>Ja <\/b>ein.<\/p>\n<p>Danach erhalten wir nach dem Wechseln in die Seitenansicht das Resultat aus Bild 5. Der leere Zwischenraum ist verschwunden und wir finden zwischen dem ersten und dem dritten Unterbericht nur noch die beiden Leerr&auml;ume zwischen dem ersten und zweiten und dem zweiten und dritten Unterbericht vor.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_005.png\" alt=\"Ausblendete Berichte, die verkleinerbar sind, schaffen Platz f&uuml;r die darunter befindlichen Steuerelemente.\" width=\"424,7115\" height=\"299,7964\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Ausblendete Berichte, die verkleinerbar sind, schaffen Platz f&uuml;r die darunter befindlichen Steuerelemente.<\/span><\/b><\/p>\n<p>Das bedeutet wiederum, dass wir, wenn wir beim Ausblenden mehrerer Unterberichte keine Zwischenr&auml;ume kumulieren wollen, die Unterberichte direkt untereinander anordnen m&uuml;ssen, also etwa so wie in Bild 6.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_006.png\" alt=\"Unterberichte ohne Zwischenr&auml;ume\" width=\"424,7115\" height=\"321,2763\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Unterberichte ohne Zwischenr&auml;ume<\/span><\/b><\/p>\n<p>Wenn Sie Zwischenr&auml;ume zwischen den Unterberichten ben&ouml;tigen, k&ouml;nnen Sie dort beispielsweise <b>Rectangle<\/b>-Steuerelemente der gew&uuml;nschten Gr&ouml;&szlig;e einf&uuml;gen. Die Rahmenfarbe der <b>Rectangle<\/b>-Steuerelemente m&uuml;ssen Sie dann nat&uuml;rlich auf <b>Wei&szlig; <\/b>einstellen, damit man diese nicht sieht.<\/p>\n<p>Die Eigenschaft <b>Verkleinerbar <\/b>stellen sie genau wie bei den Unterbericht-Steuerelementen auf <b>Ja <\/b>ein. Wenn Sie dann beispielsweise den ersten Unterbericht ausblenden, indem Sie seine Eigenschaft <b>Sichtbar <\/b>auf den Wert <b>Nein <\/b>einstellen, m&uuml;ssen Sie auch das <b>Rectangle<\/b>-Steuerelement zwischen dem ersten und dem zweiten Unterbericht-Steuerelement ausblenden. Gleiches gilt f&uuml;r den zweiten und dritten Unterbericht und das dazwischen befindliche <b>Rectangle<\/b>-Steuerelement so weiter.<\/p>\n<p>Wir gehen allerdings der Einfachheit halber davon aus, dass wir keine Platzhalter zwischen den Unterberichten ben&ouml;tigen.<\/p>\n<p><b>Unterberichte beim &Ouml;ffnen per Code ausblenden<\/b><\/p>\n<p>Wir nehmen nun an, dass der Benutzer vor dem &Ouml;ffnen des Berichts mit den Unterberichten festgelegt hat, welche der Unterberichte angezeigt und welche ausgeblendet werden sollen. Dann m&uuml;ssen wir ein Ereignis finden, das beim &Ouml;ffnen des Berichts ausgel&ouml;st wird und in dem wir das Ausblenden der gew&uuml;nschten Unterberichte implementieren k&ouml;nnen.<\/p>\n<p>Dazu eignet sich die Ereigniseigenschaft <b>Beim Laden<\/b>. F&uuml;r diese hinterlegen wir testweise die folgende Ereignisprozedur:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Report_Load()\r\n     Me!rptUnterbericht2.Visible = <span style=\"color:blue;\">False<\/span>\r\n     Me!rptUnterbericht4.Visible = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Und damit erhalten wir genau das gew&uuml;nschte Ergebnis, wie Bild 7 zeigt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_007.png\" alt=\"Bericht mit zwei per VBA ausgeblendeten Unterberichten\" width=\"424,7115\" height=\"233,513\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Bericht mit zwei per VBA ausgeblendeten Unterberichten<\/span><\/b><\/p>\n<p><b>&Ouml;ffnen des Berichts mit ausgeblendeten Unterberichten per Formular<\/b><\/p>\n<p>Nun wollen wir dem Benutzer die M&ouml;glichkeit geben, vor dem &Ouml;ffnen des Berichts festzulegen, welche Unterberichte im Bericht angezeigt werden sollen. Dazu legen wir ein Formular an, das die Unterberichte in einem Listenfeld anzeigt.<\/p>\n<p>Dieses Formular sieht in der Entwurfsansicht wie in Bild 8 aus. Es enth&auml;lt ein Listenfeld namens <b>lstUnterberichte<\/b>. F&uuml;r den Unterbericht stellen Sie die Eigenschaft <b>Herkunftsart <\/b>auf <b>Wertliste <\/b>ein und geben f&uuml;r die Eigenschaft <b>Datensatzherkunft <\/b>die folgende Liste ein:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_008.png\" alt=\"Formular mit Listenfeld zur Auswahl der Unterberichte\" width=\"424,7115\" height=\"236,3534\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Formular mit Listenfeld zur Auswahl der Unterberichte<\/span><\/b><\/p>\n<pre>\"rptUnterbericht1\";\"Unterbericht 1\";\"rptUnterbericht2\";\"Unterbericht 2\";\"rptUnterbericht3\";\"Unterbericht 3\";\"rptUnterbericht4\";\"Unterbericht 4\"<\/pre>\n<p>Der erste, dritte, f&uuml;nfte und siebte Eintrag enth&auml;lt die Namen der auszuw&auml;hlenden Unterberichte, die nicht im Listenfeld angezeigt werden sollen, sondern nur zum Referenzieren der Unterbericht-Steuerelemente dienen sollen. Der zweite, vierte, sechste und achte Eintrag enth&auml;lt die Namen der Berichte, die im Listenfeld angezeigt werden sollen.<\/p>\n<p>Damit die Eintr&auml;ge mit ungeradem Index nicht angezeigt werden, sondern nur die mit geradem Index, stellen wir die Eigenschaft <b>Spaltenanzahl <\/b>des Listenfeldes auf <b>2 <\/b>und <b>Spaltenbreiten <\/b>auf <b>0cm <\/b>ein. So wird die erste Spalte ausgeblendet und die zweite auf der verbleibenden Breite angezeigt.<\/p>\n<p>Damit der Benutzer mehrere Eintr&auml;ge gleichzeitig markieren kann, stellen wir au&szlig;erdem die Eigenschaft <b>Mehrfachauswahl <\/b>auf <b>Einzeln <\/b>ein. Schlie&szlig;lich blenden wir Elemente wie Datensatzmarkierer, Navigationsschaltfl&auml;chen und Bildlaufleisten durch Einstellen der gleichnamigen Eigenschaften auf den Wert <b>Nein <\/b>aus.<\/p>\n<p>Die Schaltfl&auml;che <b>Bericht &ouml;ffnen <\/b>hei&szlig;t <b>cmdBerichtOeffnen <\/b>und erh&auml;lt die folgende Prozedur f&uuml;r die Ereigniseigenschaft <b>Beim Klicken<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdBerichtOeffnen_Click()\r\n     DoCmd.OpenReport \"rptHauptbericht1\", acViewPreview\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit &ouml;ffnen wir beim Anklicken der Schaltfl&auml;che wie in Bild 9 allerdings einfach nur den Bericht in der Seitenansicht. Die Aufgabe, die im Listenfeld ausgew&auml;hlten Unterberichte anzuzeigen und die &uuml;brigen auszublenden, delegieren wir in diesem Fall an das <b>Beim &Ouml;ffnen<\/b>-Ereignis des Hauptberichts.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_009.png\" alt=\"Auswahl der Unterberichte\" width=\"424,7115\" height=\"181,5796\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Auswahl der Unterberichte<\/span><\/b><\/p>\n<p>Die ben&ouml;tigte Prozedur deklariert dann eine Laufvariable namens <b>i <\/b>und eine Variable zum Referenzieren des <b>ListBox<\/b>-Steuerelements im aufrufenden Formular:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Report_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lst<span style=\"color:blue;\"> As <\/span>ListBox<\/pre>\n<p><!--30percent--><\/p>\n<p>Dann referenziert sie mit der Variablen lst das Listenfeld <b>lstUnterberichte <\/b>im Formular <b>frmUnterberichteAuswaehlen<\/b>:<\/p>\n<pre>     <span style=\"color:blue;\">Set<\/span> lst = _\r\n         Forms!frmUnterberichteAuswaehlen!lstUnterberichte<\/pre>\n<p>Anschlie&szlig;end durchl&auml;uft sie in einer <b>For Next<\/b>-Schleife alle Werte von <b>0 <\/b>bis zur Anzahl der Listeneintr&auml;ge minus <b>1<\/b>.<\/p>\n<p>Darin pr&uuml;ft sie, ob der entsprechende Eintrag im Listenfeld markiert ist. Falls ja, wird die Eigenschaft <b>Visible <\/b>des passenden Unterbericht-Steuerelements auf <b>True <\/b>eingestellt, sonst auf <b>False<\/b>:<\/p>\n<pre>     For i = 0 To lst.ListCount - 1\r\n         <span style=\"color:blue;\">If <\/span>lst.Selected(i)<span style=\"color:blue;\"> Then<\/span>\r\n             Me(\"rptUnterbericht\" & i + 1).Visible = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             Me(\"rptUnterbericht\" & i + 1).Visible = <span style=\"color:blue;\">False<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wenn wir das Formular nun in der Formularansicht &ouml;ffnen, ein paar Unterberichte ausw&auml;hlen und auf die Schaltfl&auml;che <b>Bericht &ouml;ffnen <\/b>klicken, erhalten wir das Ergebnis aus Bild 10. Es funktioniert also wie gew&uuml;nscht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_010.png\" alt=\"Anzeige der ausgew&auml;hlten Unterberichte\" width=\"424,7115\" height=\"306,1874\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Anzeige der ausgew&auml;hlten Unterberichte<\/span><\/b><\/p>\n<p><b>Unterberichte in beliebiger Reihenfolge anzeigen<\/b><\/p>\n<p>Nun gehen wir noch einen Schritt weiter und wollen dem Benutzer erm&ouml;glichen, nicht nur auszuw&auml;hlen, welche Unterberichte &uuml;berhaupt angezeigt werden sollen, sondern auch noch, in welcher Reihenfolge dies geschehen soll. <\/p>\n<p>Dazu erstellen wir ein neues Formular, dem wir zwei Listenfelder zuweisen &#8211; eines, dass die nicht ausgew&auml;hlten Unterberichte anzeigt und eines, dass die ausgew&auml;hlten Eintr&auml;ge enth&auml;lt. Das erste ist beim &Ouml;ffnen des Formulars mit allen zur Verf&uuml;gung stehenden Unterberichten gef&uuml;llt.<\/p>\n<p>Damit wir die Information, welcher Unterbericht angezeigt werden soll und in welcher Reihenfolge, irgendwo speichern k&ouml;nnen, erstellen wir eine Tabelle namens <b>tblUnterberichte<\/b>, welche die Namen aller Unterberichte enth&auml;lt und ein weiteres Feld, das die Position der anzuzeigenden liefert. Der Entwurf der Tabelle sieht wie in Bild 11 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_011.png\" alt=\"Tabelle zum Speichern der Unterberichte\" width=\"499,6607\" height=\"347,854\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Tabelle zum Speichern der Unterberichte<\/span><\/b><\/p>\n<p>F&uuml;r das Feld <b>Unterbericht <\/b>legen wir einen eindeutigen Index an, damit jeder Bericht nur einmal aufgenommen werden kann.<\/p>\n<p>Danach tragen wir die Berichte <b>rptUnterbericht1<\/b>, <b>rptUnterbericht2<\/b>, <b>rptUnterbericht3 <\/b>und <b>rptUnterbericht4 <\/b>in die Tabelle ein. Das Feld <b>Position <\/b>wird automatisch mit dem Standardwert <b>0 <\/b>gef&uuml;llt.<\/p>\n<p><b>Formular zur Auswahl der Unterberichte mit Reihenfolge<\/b><\/p>\n<p>Das Formular, mit dem wir die anzuzeigenden Berichte und ihre Reihenfolge festlegen wollen, sieht wie in Bild 12 aus. Die beiden Listenfelder hei&szlig;en <b>lstVerfuegbareUnterberichte <\/b>und <b>lstAnzuzeigendeUnterberichte<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_014.png\" alt=\"Formular mit Listenfeldern zum Ausw&auml;hlen der anzuzeigenden Unterberichte\" width=\"424,7115\" height=\"267,2144\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Formular mit Listenfeldern zum Ausw&auml;hlen der anzuzeigenden Unterberichte<\/span><\/b><\/p>\n<p>Das Listenfeld <b>lstVerfuegbareUnterberichte <\/b>verwendet die Abfrage <b>qryVerfuegbareUnterberichte <\/b>als Datensatzherkunft. Diese ist in Bild 13 abgebildet. Sie liefert alle Eintr&auml;ge der Tabelle <b>tblUnterberichte<\/b>, deren Feld <b>Position <\/b>den Wert <b>0 <\/b>enth&auml;lt, und zwar in aufsteigender Reihenfolge nach dem Feld <b>Unterbericht<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_012.png\" alt=\"Abfrage zum Ermitteln der verf&uuml;gbaren Unterberichte\" width=\"424,7115\" height=\"312,7505\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 13: Abfrage zum Ermitteln der verf&uuml;gbaren Unterberichte<\/span><\/b><\/p>\n<p>Das zweite Listenfeld soll die Abfrage <b>qryAnzuzeigendeUnterberichte <\/b>als Datensatzquelle verwenden (siehe Bild 14). Diese liefert alle Eintr&auml;ge der Tabelle <b>tblUnterberichte<\/b>, deren Feld <b>Position <\/b>einen Wert ungleich <b>0 <\/b>enth&auml;lt, und zwar in aufsteigender Reihenfolge nach dem Feld <b>Position<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_013.png\" alt=\"Abfrage zum Ermitteln der anzuzeigenden Unterberichte\" width=\"424,7115\" height=\"313,6758\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 14: Abfrage zum Ermitteln der anzuzeigenden Unterberichte<\/span><\/b><\/p>\n<p>F&uuml;r beide Listenfelder stellen wir die Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>auf die Werte <b>2 <\/b>und <b>0cm <\/b>ein. Damit wird das Feld mit dem Prim&auml;rschl&uuml;sselfeld zwar als gebundene Spalte verwendet, aber nicht angezeigt &#8211; daf&uuml;r erscheint dann der Name der Unterberichte im Listenfeld.<\/p>\n<p><b>Unterberichte hinzuf&uuml;gen<\/b><\/p>\n<p>Wir wollen das Verschieben der Unterberichte zwischen den Listenfeldern allein per Doppelklick realisieren. Wenn der Benutzer auf einen Eintrag des linken Listenfeldes klickt, wird es unten an das rechte Listenfeld angeh&auml;ngt. Wenn der Benutzer auf einen Eintrag des rechten Listenfeldes klickt, wird es in das linke Listenfeld verschoben.<\/p>\n<p>Die Prozedur, die durch einen Doppelklick auf das linke Listenfeld <b>lstVerfuegbareUnterberichte <\/b>ausgel&ouml;st wird, finden Sie in Listing 1. Dort ermitteln wir als Erstes den Index des angeklickten Eintrags und speichern diesen in der Variablen <b>lngAngeklickt<\/b>. Dann lesen wir &uuml;ber die Eigenschaft <b>ItemData <\/b>mit diesem Wert als Parameter den Wert der gebundenen Spalte des angeklickten Elements aus.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>lstVerfuegbareUnterberichte_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>lngID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngAngeklickt<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>lngPositionMax<span style=\"color:blue;\"> As Long<\/span>\r\n     lngAngeklickt = Me!lstVerfuegbareUnterberichte.ItemsSelected(0)\r\n     lngID = Me!lstVerfuegbareUnterberichte.ItemData(lngAngeklickt)\r\n     lngPositionMax = Nz(DMax(\"Position\", \"tblUnterberichte\"), 0)\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     db.Execute \"UPDATE tblUnterberichte SET Position = \" & lngPositionMax + 1 & \" WHERE UnterberichtID = \" & lngID, _\r\n         dbFailOnError\r\n     Me!lstVerfuegbareUnterberichte.Requery\r\n     Me!lstAnzuzeigendeUnterberichte.Requery\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Hinzuf&uuml;gen eines Unterberichts zur Liste der anzuzeigenden Unterberichte<\/span><\/b><\/p>\n<p>Um das Element an der richtigen Stelle in der Datensatzherkunft des rechten Listenfeldes einzuordnen, m&uuml;ssen wir die Position des untersten dort angezeigten Elements ermitteln. Das erledigen wir per <b>DMax<\/b>-Funktion f&uuml;r die Werte des Feldes <b>Position<\/b>.<\/p>\n<p>Dann weisen wir der Variablen <b>db <\/b>einen Verweis auf das <b>Database<\/b>-Objekt der aktuellen Datenbank zu. Dann verwenden wir seine <b>Execute<\/b>-Methode, um den Wert des Feldes <b>Position <\/b>des zu verschiebenden Datensatzes auf den Wert von <b>lngPosition <\/b>plus eins zu &auml;ndern.<\/p>\n<p>Schlie&szlig;lich aktualisieren wir noch die beiden Listenfelder mit der <b>Requery<\/b>-Methode, damit beide den neuen Stand der Daten anzeigen (siehe Bild 15).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_015.png\" alt=\"Listenfelder zur Auswahl der Unterberichte in Aktion\" width=\"424,7115\" height=\"222,6074\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 15: Listenfelder zur Auswahl der Unterberichte in Aktion<\/span><\/b><\/p>\n<p><b>Unterberichte entfernen<\/b><\/p>\n<p>Die Prozedur, die durch einen Doppelklick auf einen Eintrag des rechten Listenfeldes ausgel&ouml;st wird, sieht wie in Listing 2 aus. Sie arbeitet so &auml;hnlich wie die zum Hinzuf&uuml;gen von Unterberichten zum rechten Listenfeld. Wir deklarieren die gleichen Variablen und lesen dann ebenfalls den Index des zu verschiebenden Elements und dar&uuml;ber dann den Prim&auml;rschl&uuml;sselwert des Datensatzes der Tabelle <b>tblUnterberichte <\/b>aus. Dann ermitteln wir per <b>DLookup <\/b>f&uuml;r die Variable <b>lngPosition <\/b>den Wert des Feldes Position des zu verschiebenden Datensatzes.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>lstAnzuzeigendeUnterberichte_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>lngID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngAngeklickt<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>lngPosition<span style=\"color:blue;\"> As Long<\/span>\r\n     lngAngeklickt = Me!lstAnzuzeigendeUnterberichte.ItemsSelected(0)\r\n     lngID = Me!lstAnzuzeigendeUnterberichte.ItemData(lngAngeklickt)\r\n     lngPosition = DLookup(\"Position\", \"tblUnterberichte\", \"UnterberichtID = \" & lngID)\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     db.Execute \"UPDATE tblUnterberichte SET Position = 0 WHERE UnterberichtID = \" & lngID, dbFailOnError\r\n     db.Execute \"UPDATe tblUnterberichte SET Position = Position - 1 WHERE Position &gt; \" & lngPosition, dbFailOnError\r\n     Me!lstAnzuzeigendeUnterberichte.Requery\r\n     Me!lstVerfuegbareUnterberichte.Requery\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Entfernen eines Unterberichts aus der Liste der anzuzeigenden Unterberichte<\/span><\/b><\/p>\n<p>Nun folgen zwei <b>Execute<\/b>-Anweisungen, mit denen wir zuerst den Wert des Feldes <b>Position <\/b>des aus der Liste der anzuzeigenden Unterberichte zu entfernenden Datensatzes auf <b>0 <\/b>einstellen. Damit wird dieser gleich wieder im linken Listenfeld angezeigt. Die zweite <b>Execute<\/b>-Anweisung stellt den Wert des Feldes <b>Position<\/b> f&uuml;r alle Datens&auml;tze, bei denen dieses Feld einen Wert gr&ouml;&szlig;er als den aus <b>lngPosition <\/b>enth&auml;lt, auf den vorherigen Wert dieses Feldes minus <b>1 <\/b>ein. Auch hier aktualisieren wir die beiden Listenfelder anschlie&szlig;end wieder durch den Aufruf der <b>Requery<\/b>-Methode.<\/p>\n<p>Um den Bericht mit den Unterberichten aufzurufen, verwenden wir diese Ereignisprozedur:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdBerichtAnzeigen_Click()\r\n     DoCmd.OpenReport \"rptHauptberichtReihenfolge\", _\r\n         acViewPreview\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b>Bericht f&uuml;r Auswahl mit Reihenfolge<\/b><\/p>\n<p>Nun erstellen wir einen neuen Hauptbericht, indem wir den bisher verwendeten Hauptbericht <b>rptHauptbericht1 <\/b>in <b>rptHauptberichtReihenfolge<\/b> kopieren.<\/p>\n<p>Die Unterbericht-Steuerelemente behalten wir bei und merken uns, dass ihre Namen <b>rptUnterbericht1 <\/b>bis <b>rptUnterbericht4 <\/b>lauten. Das sind zwar genau die Namen, die wir auch f&uuml;r die als Unterberichte zu verwendenden Berichte vergeben haben, aber in diesem Fall gibt es dort keinen Zusammenhang mehr &#8211; deshalb benennen wir diese, um Verwechslungen zu vermeiden, nun in <b>rptSub1 <\/b>bis <b>rptSub4 <\/b>um.<\/p>\n<p>Au&szlig;erdem leeren wir die Eigenschaft <b>Herkunftsobjekt <\/b>f&uuml;r alle vier Unterbericht-Steuerelemente, damit klarer wird, dass es keine feste Bindung mehr von einem Unterbericht-Steuerelement zu einem der als Unterbericht zu verwendenden Berichte gibt.<\/p>\n<p>Schlie&szlig;lich entfernen wir die Ereignisprozedur f&uuml;r das Ereignis <b>Report_Load<\/b>, denn die Aktion, die wir nun beim &Ouml;ffnen des Berichts durchf&uuml;hren wollen, k&ouml;nnen wir nicht mehr im Ereignis <b>Report_Load <\/b>durchf&uuml;hren. Stattdessen legen wir eine neue Ereignisprozedur f&uuml;r das Ereignis <b>Beim &Ouml;ffnen <\/b>des Berichts an. Diese Prozedur finden Sie in Listing 3.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Report_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>rptUnterbericht<span style=\"color:blue;\"> As <\/span>SubForm\r\n     <span style=\"color:blue;\">Dim <\/span>intUnterberichte<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblUnterberichte WHERE Position &gt; 0 ORDER BY Position\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         <span style=\"color:blue;\">Set<\/span> rptUnterbericht = Me(\"rptSub\" & rst.AbsolutePosition + 1)\r\n         rptUnterbericht.SourceObject = rst!Unterbericht\r\n         rptUnterbericht.Visible = <span style=\"color:blue;\">True<\/span>\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Ein- und Ausblenden von Unterberichten<\/span><\/b><\/p>\n<p>Die Prozedur f&uuml;llt die Variable <b>db <\/b>mit einem <b>Database<\/b>-Objekt f&uuml;r die aktuelle Datenbank und ein Recordset, dass alle Datens&auml;tze der Tabelle <b>tblUnterberichte <\/b>enth&auml;lt, deren Feld <b>Position <\/b>einen Wert gr&ouml;&szlig;er als <b>0 <\/b>enth&auml;lt. Die Abfrage sortiert die Datens&auml;tze au&szlig;erdem in aufsteigender Reihenfolge nach dem Wert des Feldes <b>Position<\/b>.<\/p>\n<p>Dann durchl&auml;uft die Prozedur alle Datens&auml;tze dieses Recordsets, was dem Durchlaufen aller Eintr&auml;ge des rechten Listenfelds des Formulars <b>frmUnterberichteMitReihenfolge <\/b>entspricht. Dabei weisen wir der <b>SubForm<\/b>-Variablen <b>rptUnterbericht <\/b>einen Verweis auf das Unterformular-Steuerelement zu, dessen Name dem Ausdruck <b>rptSub <\/b>plus dem Wert der Eigenschaft <b>AbsolutePosition + 1 <\/b>des aktuellen Datensatzes entspricht. <b>AbsolutePosition <\/b>f&uuml;r den ersten Datensatz lautet <b>0<\/b>, sodass wir im ersten Durchlauf das Unterbericht-Steuerelement mit dem Namen <b>rptSub1 <\/b>referenzieren.<\/p>\n<p>Aber warum verwenden wir &uuml;berhaupt den Objekttyp <b>SubForm<\/b>, obwohl wir mit einem Unterbericht arbeiten Ganz einfach: Es gibt keine Klasse namens <b>SubReport<\/b>, denn <b>SubForm <\/b>wird sowohl f&uuml;r Unterformulare als auch f&uuml;r Unterberichte verwendet.<\/p>\n<p>Danach stellen wir den Wert der Eigenschaft <b>SourceObject<\/b>, die der Eigenschaft <b>Herkunftsobjekt <\/b>entspricht, die wir oben f&uuml;r alle Unterbericht-Steuerelemente geleert haben, auf den Wert des Feldes <b>Unterbericht <\/b>ein. Au&szlig;erdem machen wir das Unterbericht-Steuerelement, das wir weiter oben durch Einstellen der Eigenschaft <b>Sichtbar <\/b>auf den Wert <b>Nein <\/b>ausgeblendet haben, durch Setzen der Eigenschaft <b>Visible <\/b>auf den Wert <b>True <\/b>wieder sichtbar.<\/p>\n<p>Damit wechseln wir mit <b>MoveNext <\/b>zum n&auml;chsten Datensatz des Recordsets und f&uuml;llen die folgenden Unterbericht-Steuerelemente, bis wir alle Datens&auml;tze durchlaufen haben.<\/p>\n<p>Da wir im Entwurf des Berichts f&uuml;r alle Unterberichte die Eigenschaft <b>Herkunftsobjekt <\/b>geleert und die Eigenschaft <b>Sichtbar <\/b>auf <b>Nein <\/b>eingestellt haben, sind wir an dieser Stelle bereits fertig &#8211; die Unterbericht-Steuerelemente zeigen alle ausgew&auml;hlten Unterberichte an.<\/p>\n<p>Das Ergebnis sehen Sie in Bild 16.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_05\/pic_1255_016.png\" alt=\"Auswahl und Anzeige von Unterberichten in benutzerdefinierter Reihenfolge\" width=\"599,593\" height=\"320,0122\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 16: Auswahl und Anzeige von Unterberichten in benutzerdefinierter Reihenfolge<\/span><\/b><\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>In diesem Beitrag haben wir uns die Grundlagen f&uuml;r das Zusammenstellen von Berichten mit verschiedenen zur Auswahl stehenden Unterberichten angesehen. Als Ergebnis haben wir nun ein Formular, mit dem wir einen Hauptbericht aus vier Unterberichten flexibel zusammenstellen k&ouml;nnen.<\/p>\n<p>Allerdings haben wir hier nur Beispielberichte verwendet &#8211; in der Praxis wird eine Anwendung vielleicht noch weitere Unterberichte enthalten, die gegebenenfalls von Zeit zu Zeit durch weitere Unterberichte erg&auml;nzt werden. Daher wollen wir in einem weiteren Beitrag die Techniken, die wir hier kennengelernt haben, in eine neue L&ouml;sung einflie&szlig;en lassen, die eine noch flexiblere und dynamischere Zusammenstellung von Berichten und Unterberichten erlaubt. Dort soll es auch m&ouml;glich sein, Berichte und Unterberichte in verschiedenen Konstellationen zusammenzustellen und diese auch zu speichern. Den Beitrag finden Sie unter dem Titel <b>Berichte und Unterberichte konfigurieren <\/b>(<b>www.access-im-unternehmen.de\/1260<\/b>).<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>SelektierbareUnterberichte.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/8FE47AAE-9C0C-436E-8CA8-2886261821DD\/aiu_1255.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unterberichte bergen oft spannende Herausforderungen in sich &#8211; vor allem, wenn die Inhalte sich &uuml;ber mehr als eine Seite erstrecken. Die Aufgabe, die ein Leser mir diesmal stellt, hatte allerdings einen anderen Charakter: Er w&uuml;nschte sich, dass die Benutzer einzelne Unterberichte je nach Anforderung aktivieren oder deaktivieren konnten. Wir suchen also eine M&ouml;glichkeit, um festzulegen, welche von verschiedenen Unterberichten im Hauptbericht angezeigt werden und welche nicht. Wie das gelingt, zeigt der vorliegende Beitrag.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662020,66052020,44000024],"tags":[],"class_list":["post-55001255","post","type-post","status-publish","format-standard","hentry","category-662020","category-66052020","category-Berichte_und_Reporting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Unterberichte ein- und ausblenden - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unterberichte ein- und ausblenden\" \/>\n<meta property=\"og:description\" content=\"Unterberichte bergen oft spannende Herausforderungen in sich - vor allem, wenn die Inhalte sich &uuml;ber mehr als eine Seite erstrecken. Die Aufgabe, die ein Leser mir diesmal stellt, hatte allerdings einen anderen Charakter: Er w&uuml;nschte sich, dass die Benutzer einzelne Unterberichte je nach Anforderung aktivieren oder deaktivieren konnten. Wir suchen also eine M&ouml;glichkeit, um festzulegen, welche von verschiedenen Unterberichten im Hauptbericht angezeigt werden und welche nicht. Wie das gelingt, zeigt der vorliegende Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-02T09:01:25+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/14b0530367d34e31b4f0d23562f56687\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Unterberichte ein- und ausblenden\",\"datePublished\":\"2020-10-02T09:01:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/\"},\"wordCount\":2581,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/14b0530367d34e31b4f0d23562f56687\",\"articleSection\":[\"2020\",\"5\\\/2020\",\"Berichte und Reporting\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/\",\"name\":\"Unterberichte ein- und ausblenden - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/14b0530367d34e31b4f0d23562f56687\",\"datePublished\":\"2020-10-02T09:01:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/14b0530367d34e31b4f0d23562f56687\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/14b0530367d34e31b4f0d23562f56687\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Unterberichte_ein_und_ausblenden\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unterberichte ein- und ausblenden\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Unterberichte ein- und ausblenden - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/","og_locale":"de_DE","og_type":"article","og_title":"Unterberichte ein- und ausblenden","og_description":"Unterberichte bergen oft spannende Herausforderungen in sich - vor allem, wenn die Inhalte sich &uuml;ber mehr als eine Seite erstrecken. Die Aufgabe, die ein Leser mir diesmal stellt, hatte allerdings einen anderen Charakter: Er w&uuml;nschte sich, dass die Benutzer einzelne Unterberichte je nach Anforderung aktivieren oder deaktivieren konnten. Wir suchen also eine M&ouml;glichkeit, um festzulegen, welche von verschiedenen Unterberichten im Hauptbericht angezeigt werden und welche nicht. Wie das gelingt, zeigt der vorliegende Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-10-02T09:01:25+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/14b0530367d34e31b4f0d23562f56687","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Unterberichte ein- und ausblenden","datePublished":"2020-10-02T09:01:25+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/"},"wordCount":2581,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/14b0530367d34e31b4f0d23562f56687","articleSection":["2020","5\/2020","Berichte und Reporting"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/","url":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/","name":"Unterberichte ein- und ausblenden - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/14b0530367d34e31b4f0d23562f56687","datePublished":"2020-10-02T09:01:25+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/14b0530367d34e31b4f0d23562f56687","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/14b0530367d34e31b4f0d23562f56687"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Unterberichte_ein_und_ausblenden\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Unterberichte ein- und ausblenden"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001255"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001255\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}