{"id":55000434,"date":"2007-02-01T00:00:00","date_gmt":"2021-02-11T21:08:15","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=434"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Monatskalender_als_Bericht_drucken","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/","title":{"rendered":"Monatskalender als Bericht drucken"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/b7c03e714ee54e539cfc62351a92c19c\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Mit Access-Bericht l&auml;sst sich eine Menge anstellen, was allerdings einiges an Erfahrung und &uuml;bung erfordert. Ein Monatskalender, der Datumsangaben in einem Raster von Wochen und Wochentagen enth&auml;lt, ist erstens eine recht interessante Aufgabe und zweitens macht er sich auf verschiedenen Dokumenten gut: Haben Sie schon einmal &uuml;berlegt, einem Kunden eine Monats&uuml;bersicht zu dem Tag mitzuliefern, an dem ein Ereignis wie zum Beispiel eine Bestellung erfolgt<\/b><\/p>\n<\/p><\/div>\n<div class=\"story\">\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Tage mal Wochen<\/p>\n<p>Ein Monatskalender ist &uuml;blicherweise in ein Raster eingeteilt, das oben die Kalendertage (Montag, Dienstag &#8230;), links die Kalenderwochen und in der aufgespannten Tabelle die Tagesdaten enth&auml;lt. Anschaulich zeigt dies Abb. 1.<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Ein Monatskalender als Bericht<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Datenherkunft eines Kalenderberichts<\/b><\/p>\n<p>Es gibt prinzipiell zwei M&ouml;glichkeiten, einen Kalender wie in Bild 1 zu erstellen: Die erste beruht darauf, eine Reihe von Steuerelementen in der gezeigten Anordnung zu platzieren und diese zur Laufzeit mit den gew&uuml;nschten Werten zu f&uuml;llen. Da aber keiner Lust hat, mehr als 50 Steuerelemente in den Berichtsentwurf einzuf&uuml;gen, stellen wir hier eine etwas elegantere L&ouml;sung vor, die au&szlig;erdem wesentlich datenbankbezogener ist: Dazu ben&ouml;tigen Sie zun&auml;chst eine Tabelle mit Kalenderdaten. Diese sieht im Entwurf wie in Bild 2 aus und wird mit der Routine aus Listing 1 gef&uuml;llt. Mit dem Aufruf dieser Routine &uuml;bergeben Sie das Start- und das Enddatum der anzulegenden Datumsdatens&auml;tze. Der Aufruf zum Anlegen aller Kalenderdaten des Jahres 2007 sieht etwa so aus:<\/p>\n<p class=\"tabellenkopf\">Listing 2: Snapshot-Datei ohne visuelles Snapshot Viewer Control ausdrucken<\/p>\n<pre>Public Sub KalendertabelleFuellen(dateStartdatum As Date, dateEnddatum As Date)\r\n     Dim dateAktuellesdatum As Date\r\n     Dim db As DAO.Database\r\n     Dim strDatum As String\r\n     Set db = CurrentDb\r\n     ''Alte Daten l&ouml;schen\r\n     db.Execute &quot;DELETE FROM tblKalenderdaten&quot;, dbFailOnError\r\n     ''Daten in einer Schleife eintragen\r\n     For dateAktuellesdatum = dateStartdatum To dateEnddatum\r\n         strDatum = SQLDatum(dateAktuellesdatum)\r\n         db.Execute &quot;INSERT INTO tblKalenderdaten(Kalenderdatum) VALUES(&quot; _<br \/> &amp; strDatum &amp; &quot;)&quot;, dbFailOnError\r\n     Next dateAktuellesdatum\r\nEnd Sub\r\nKalendertabelleFuellen &quot;1.1.2007&quot;, &quot;31.12.2007&quot;<\/pre>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 2: Entwurf einer Tabelle mit Kalenderdaten<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Eins nach dem anderen<\/b><\/p>\n<p>Damit Sie die Vorgehensweise leicht nachvollziehen k&ouml;nnen, beschreiben wir Schritt f&uuml;r Schritt, wie der Kalenderbericht entsteht.<\/p>\n<p>Zun&auml;chst legen Sie einen Bericht an, weisen ihm als Datenherkunft die Tabelle <b>tblKalenderdaten<\/b> zu und speichern ihn unter dem Namen <b>rptMonatsansichtKlein<\/b>.<\/p>\n<p>F&uuml;gen Sie das Feld <b>Kalenderdatum<\/b> zum Detailbereich hinzu und wechseln Sie zur Vorschauansicht: Es ergibt sich das Bild aus Bild 3. Der Bericht enth&auml;lt nun zumindest schon einmal eine Reihe von Kalenderdaten.<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Bericht mit einer Auflistung von Kalenderdaten<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Allerdings soll der Kalender ja nur die Tage anzeigen. Dazu f&uuml;gen Sie ein Textfeld namens <b>txtTag <\/b>hinzu, entfernen sein Beschriftungsfeld und stellen seine Eigenschaft <b>Steuerelementinhalt <\/b>auf den folgenden Ausdruck ein:<\/p>\n<pre>=Day(Kalenderdatum)<\/pre>\n<p>Entfernen Sie au&szlig;erdem das urspr&uuml;ngliche Datumstextfeld <b>Kalenderdatum<\/b>. Der Bericht zeigt in der Vorschau nun immerhin schon einmal die Kalendertage an (siehe Bild 4).<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Statt der kompletten Daten zeigt der Bericht nun nur noch die Kalendertage an.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Nun wollen diese angeordnet werden &#8211; und zwar so, dass jeweils die Montage ganz links und jeweils die Tage einer Woche in einer Reihe stehen. Dazu setzen Sie die Eigenschaft <b>MoveLayout<\/b> ein, die [1] genauer erl&auml;utert.<\/p>\n<p>Jedes angezeigte Datum soll auf den Wochentag gepr&uuml;ft und davon abh&auml;ngig von links nach rechts positioniert werden. Die daf&uuml;r notwendige Routine muss also f&uuml;r jeden Datensatz ausgel&ouml;st werden, was etwa mit der Ereigniseigenschaft <b>Beim Formatieren <\/b>des Detailbereichs m&ouml;glich ist. Listing 2 zeigt eine Routine, die wie gew&uuml;nscht vorgeht. <\/p>\n<p class=\"tabellenkopf\">Listing 2: Aufteilen der Tageszahlen auf mehrere Reihen &aacute; sieben Spalten<\/p>\n<pre>Const cintBreite As Integer = 300 \r\nPrivate Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)\r\n     ''Wenn Wochentag = Sonntag, dann...\r\n     If Weekday(Me!Kalenderdatum) = 1 Then\r\n         ''implizit: Me.MoveLayout = True, Ausgabe in n&auml;chster Zeile fortsetzen\r\n         ''Steuerelement rechts anordnen\r\n         Me!txtTag.Left = cintBreite * 7\r\n         ''... sonst:\r\n     Else\r\n         ''nicht zur n&auml;chsten Zeile vorr&uuml;cken\r\n         Me.MoveLayout = False\r\n         ''Steuerelemente passend anordnen\r\n         Me!txtTag.Left = cintBreite * (Weekday(Me.Kalenderdatum) - 1)\r\n     End If\r\nEnd Sub<\/pre>\n<p>Diese Routine pr&uuml;ft, ob es sich bei dem Tag um einen Sonntag handelt, und legt den Abstand des Steuerelements vom linken Rand auf das Siebenfache des Werts der Konstanten <b>cintBreite<\/b> fest, die im gleichen Modul deklariert wird. Dadurch verschiebt die Routine alle Textfelder, deren Datum einen Sonntag enth&auml;lt, relativ weit nach rechts.<\/p>\n<p>In allen anderen F&auml;llen, also bei den Wochentagen Montag bis Samstag, ermittelt die Routine den Abstand vom linken Rand &uuml;ber das Produkt aus dem Wert der <b>Weekday<\/b>-Funktion (die etwa f&uuml;r den Montag standardm&auml;&szlig;ig den Wert <b>2<\/b> liefert) und dem Wert der oben genannten Konstanten.Gleichzeitig stellt sie die Eigenschaft <b>MoveLayout <\/b>jeweils auf den Wert <b>False <\/b>ein, was dazu f&uuml;hrt, dass der folgende Datensatz in die gleiche Zeile geschrieben wird. Im Bericht sieht das nun wie in Bild 5 aus.<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic005_opt.jpeg\" alt=\"pic005.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 5: Kalendertage in Reih und Glied &#8211; allerdings noch reichlich viel f&uuml;r eine Monats&uuml;bersicht.<\/span><\/b><\/p>\n<\/p><\/div>\n<p><!--30percent--><\/p>\n<p><b>Daten eines Monats anzeigen<\/b><\/p>\n<p>Nun enth&auml;lt der Bericht noch alle Tage der Datenherkunft, allerdings soll er nur die Tage eines einzigen Monats anzeigen. Der Einfachheit halber soll dies standardm&auml;&szlig;ig der Monat zum aktuellen Tag sein, den Sie mit der VBA-Funktion <b>Date <\/b>ermitteln k&ouml;nnen; alternativ kann der Bericht das gew&uuml;nschte Daten aus dem &ouml;ffnungsargument (<b>OpenArgs<\/b>-Parameter, ab Access 2002) oder einer globalen Variablen entnehmen, die man nat&uuml;rlich vorher entsprechend f&uuml;llen muss. Zu diesem Tag ermitteln Sie dann mit den in [2] vorgestellten Funktionen den ersten und den letzten Tag des Monats. [3] liefert die beiden Funktionen <b>MontagErmitteln<\/b> und <b>SonntagErmitteln<\/b>.<\/p>\n<p>Diese brauchen Sie, um den ersten Montag der ersten und den letzten Sonntag der letzten Zeile zu ermitteln &#8211; auch wenn sie nicht zum aktuellen Monat geh&ouml;ren. Immerhin soll der Bericht wie in Bild 1 die erste und die letzte Zeile um die fehlenden Tage erg&auml;nzen und diese grau einf&auml;rben. Um die &uuml;bersicht zu wahren, speichern Sie die Ergebnisse dieser Funktionen in den folgenden im Berichtsmodul deklarierten Variablen:<\/p>\n<pre>Dim dateErsterTagDesMonats As Date\r\nDim dateLetzterTagDesMonats As Date\r\nDim dateErsterKalendertag As Date\r\nDim dateLetzterKalendertag As Date<\/pre>\n<p>In einer weiteren Variablen speichern Sie das Referenzdatum &#8211; also bis dato das aktuelle Datum:<\/p>\n<pre>Dim dateReferenzdatum As Date<\/pre>\n<p>Die Datenherkunft soll nun auf die Daten des Monats (plus Vorl&auml;ufer\/Nachz&uuml;gler), in dem der aktuelle Tag oder der per <b>OpenArgs <\/b>&uuml;bergebene Tag liegt, eingeschr&auml;nkt werden. Dies erledigen Sie in der Routine, die durch das Ereignis <b>Beim &ouml;ffnen <\/b>des Berichts ausgel&ouml;st wird (s. Listing 3).<\/p>\n<p class=\"tabellenkopf\">Listing 3: Ermitteln des angezeigten Zeitraums und filtern des Berichts<\/p>\n<pre>Private Sub Report_Open(Cancel As Integer)\r\n     ''Pr&uuml;fen, ob Datum &uuml;bergeben wurde (ab Access 2002), \r\n     ''sonst aktuelles Datum als Referenzdatum verwenden\r\n     If IsNull(Me.Properties!OpenArgs) Then\r\n         dateReferenzdatum = Date\r\n     Else\r\n         dateReferenzdatum = Me.OpenArgs\r\n     End If\r\n     ''Ersten und letzten Tag des Monats ermitteln\r\n     dateErsterTagDesMonats = MonatsbeginnErmitteln(dateReferenzdatum)\r\n     dateLetzterTagDesMonats = MonatsendeErmitteln(dateReferenzdatum)\r\n     ''Aus erstem und letztem Tag die ersten und letzten Tage der \r\n     ''jeweiligen Kalenderwochen ermitteln\r\n     dateErsterKalendertag = MontagErmitteln(dateErsterTagDesMonats)\r\n     dateLetzterKalendertag = SonntagErmitteln(dateLetzterTagDesMonats)\r\n     ''Filter des Berichts auf die anzuzeigenden Tage einstellen und \r\n     ''aktivieren\r\n     Me.Filter = &quot;Kalenderdatum &gt;= &quot; &amp; SQLDatum(dateErsterKalendertag) _<br \/> &amp; &quot; AND Kalenderdatum &lt;= &quot; &amp; SQLDatum(dateLetzterKalendertag)\r\n     Me.FilterOn = True\r\nEnd Sub<\/pre>\n<p>Die Routine pr&uuml;ft zun&auml;chst, ob der Aufruf ein &ouml;ffnungsargument enth&auml;lt, und verwendet dieses oder alternativ das aktuelle Datum als Referenzdatum. Dann f&uuml;llt es die vier oben genannten Variablen <b>dateErsterTagDesMonats<\/b>, <b>dateLetzterTagDesMonats<\/b>, <b>dateErsterKalendertag <\/b>und <b>dateLetzterKalendertag<\/b>.<\/p>\n<p>Anhand der letzten beiden dieser Variablen stellt die Routine dann ein Filterkriterium zusammen, weist es der Eigenschaft <b>Filter <\/b>des Berichts zu und aktiviert den Filter durch Setzen der Eigenschaft <b>FilterOn <\/b>auf den Wert <b>True<\/b>. Das Ergebnis ist die Berichtsvorschau in Bild 6.<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic006_opt.jpeg\" alt=\"pic006.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 6: Die Kalendertage eines Monats inklusive einiger Tage des vorherigen Monats<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Monatsansicht mit Beschriftungen und Linien versehen<\/b><\/p>\n<p>Der gr&ouml;&szlig;te Teil der Arbeit ist nun erledigt, nun folgen noch einige Sch&ouml;nheitsarbeiten. Da w&auml;re zun&auml;chst der Kopfbereich des Berichts, der ein Textfeld namens <b>txtMonat <\/b>f&uuml;r die Anzeige des Monats sowie die Bezeichnung der Wochentage enth&auml;lt.<\/p>\n<p>Diese f&uuml;gen Sie ganz einfach wie in Bild 7 hinzu. Gleichzeitig erg&auml;nzen Sie den Bericht um ein weiteres Textfeld namens <b>txtKW<\/b> im Detailbereich, das die Kalenderwoche anzeigen soll; dieses Textfeld bleibt zun&auml;chst ungebunden.<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic007_opt.jpeg\" alt=\"pic007.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 7: Der Entwurf der Monatsansicht mit &uuml;berschriften und Textfeld f&uuml;r die Kalenderwoche<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Das Textfeld <b>txtMonat <\/b>soll den (ausgeschriebenen) Monat und das Jahr anzeigen. Es ist ungebunden und wird erst durch die Prozedur, die beim Formatieren des Seitenkopfes ausgel&ouml;st wird, gef&uuml;llt &#8211; siehe weiter unten.<\/p>\n<p>Die Beschriftungsfelder zur Anzeige der Tages&uuml;berschriften (<b>M<\/b>, <b>D<\/b>, <b>M<\/b>, <b>D<\/b>, <b>F<\/b>, <b>S<\/b>, <b>S<\/b>) benennen Sie durchg&auml;ngig mit <b>lbl1<\/b>, <b>lbl2<\/b>, <b>lbl3<\/b> und so weiter.<\/p>\n<p>Am besten sieht die Monatsansicht im &uuml;brigen aus, wenn alle Beschriftungs- und Textfelder ihren Inhalt zentriert anzeigen.<\/p>\n<p>Um die horizontale Anordnung brauchen Sie sich keine Sorgen zu machen, die richten Sie mit ein paar geeigneten Zeilen VBA-Code.<\/p>\n<p>Achten Sie aber darauf, dass die Steuerelemente jeweils die gleiche vertikale Position und die gleiche H&ouml;he aufweisen.<\/p>\n<p>Nicht in der Abbildung zu erkennen, aber dennoch notwendig ist eine waagerechte Linie am unteren Rand des Berichtskopfes. Diese soll die Tages&uuml;berschriften optisch von den Tagen trennen.<\/p>\n<p>Die folgenden Zeilen f&uuml;gen Sie der Ereignisprozedur <b>ReportOpen <\/b>hinzu. Die Anweisungen sorgen daf&uuml;r, dass die Breite der einzelnen Steuerelemente in Abh&auml;ngigkeit von der Konstanten <b>cintBreite <\/b>eingestellt wird:<\/p>\n<pre>Dim i As Integer\r\n''Breite von Steuerelementen einstellen\r\nMe!txtTag.Width = cintBreite\r\nMe!txtMonat.Width = 8 * cintBreite\r\nMe.lineSeitenkopf.Width = 8 * cintBreite\r\n''Breite der Tages&uuml;berschriften einstellen\r\nFor i = 1 To 7\r\n     Me.Controls(&quot;lbl&quot; &amp; i).Left = _<br \/> (i) * cintBreite\r\n     Me.Controls(&quot;lbl&quot; &amp; i).Width = cintBreite\r\nNext i<\/pre>\n<p><b>Kalenderwoche f&uuml;llen und ausrichten<\/b><\/p>\n<p>Damit das Feld <b>txtKW<\/b> die Kalenderwoche anzeigt, f&uuml;gen Sie der Ereignisprozedur <b>Detailbereich_Format <\/b>noch die folgende Zeile hinzu:<\/p>\n<pre>Me!txtKW = Kalenderwoche(Me!Kalenderdatum)<\/pre>\n<p>Und damit der Bericht zwischen Kalenderwoche und dem ersten Tag einer jeden Zeile ebenfalls einen vertikalen Strich ausgibt, f&uuml;gen Sie au&szlig;erdem diese Zeile hinzu (ohne Zeilenumbruch, weitere Informationen zum Anlegen von Linien in Berichten finden Sie in [3]).<\/p>\n<pre>Me.Line (cintBreite, 0)-(cintBreite, Me.Section(acDetail).Height), 0<\/pre>\n<p>Die gleiche Linie soll im Kopfbereich des Berichts fortgesetzt werden. Dazu legen Sie eine Prozedur f&uuml;r das Ereignis <b>Beim Formatieren <\/b>des Seitenkopfes an, das wie in Listing 4 aussieht. Diese Routine sorgt auch f&uuml;r das F&uuml;llen der &uuml;berschrift mit dem ausgeschriebenen Monat und dem vierstelligen Jahr.<\/p>\n<p class=\"tabellenkopf\">Listing 4: Hinzuf&uuml;gen einer vertikalen Linie zum Kopfbereich und f&uuml;llen der &uuml;berschrift<\/p>\n<pre>Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)\r\n     ''Vertikale Linie links neben erster Tages&uuml;berschrift einf&uuml;gen\r\n     Me.Line (cintBreite, Me.lbl1.Top)-(cintBreite, Me.Section(acPageHeader).Height), 0\r\n     ''Monats&uuml;berschrift eintragen\r\n     Me!txtMonat = Format(dateReferenzdatum, &quot;mmmm&quot;) &amp; &quot; &quot; &amp; Year(dateReferenzdatum)\r\nEnd Sub<\/pre>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Wochenenden fett drucken<\/p>\n<p>Es dient der besseren &uuml;bersicht, wenn Sie die Wochenenden fett drucken. Daher f&uuml;gen Sie der Routine <b>Detailbereich_Format <\/b>noch die folgenden Zeilen hinzu.<\/p>\n<p>Diese pr&uuml;fen, ob der Wochentag dem Wert <b>1 <\/b>(Sonntag) oder <b>7 <\/b>(Samstag) entspricht und gibt die Datumsangaben entsprechend fett aus:<\/p>\n<pre>Select Case Weekday(Me.Kalenderdatum)\r\n     Case 1, 7\r\n         Me.txtTag.FontBold = True\r\n     Case Else\r\n         Me.txtTag.FontBold = False\r\nEnd Select<\/pre>\n<p><b>Vorl&auml;ufer und Nachz&uuml;gler &quot;ausgrauen&quot;<\/b><\/p>\n<p>Schlie&szlig;lich soll der Bericht die Tage, die nicht zum aktuellen Monat geh&ouml;ren, aber dennoch zum Auff&uuml;llen der ersten und\/oder letzten Zeile angezeigt werden, noch in grauer Farbe ausgeben. <\/p>\n<p>Dies erledigen die folgenden Zeilen (ebenfalls in <b>Detailbereich_Format <\/b>einzuf&uuml;gen):<\/p>\n<pre>If Month(Me!Kalenderdatum) &lt;&gt; _<br \/> Month(dateReferenzdatum) Then\r\n     Me!txtTag.ForeColor = &amp;HCCCCCC\r\nElse\r\n     Me!txtTag.ForeColor = &amp;H0\r\nEnd If<\/pre>\n<p><b>Aufruf des Berichts<\/b><\/p>\n<p>Der Aufruf des Berichts zum Anzeigen eines bestimmten Monats erfolgt &uuml;ber folgende Anweisung, wobei Sie f&uuml;r den Parameter <b>OpenArgs <\/b>ein Datum angeben, das sich in dem gew&uuml;nschten Monat befindet:<\/p>\n<pre>DoCmd.OpenReport &quot;rptMonatsansichtKlein&quot;, View:=acViewPreview, OpenArgs:=&quot;1.1.2007&quot;<\/pre>\n<p><b>Bericht in andere Berichte <br \/>einbinden<\/b><\/p>\n<p>Zum Einbinden des Berichts als Unterbericht m&uuml;ssen Sie diesen etwas &auml;ndern. Wenn Sie den angezeigten Monat des Unterberichts etwa vom Inhalt eines Textfeldes namens <b>txtReferenzdatum<\/b> im Hauptbericht abh&auml;ngig machen wollen, k&ouml;nnen Sie dieses wie folgt erledigen. Erstellen Sie vorher eine Kopie des Berichts <b>rptMonatsansichtKlein<\/b>, die Sie speziell f&uuml;r den Einsatz als Unterformular verwenden. <\/p>\n<p>Anschlie&szlig;end &auml;ndern Sie den Teil der Ereignisprozedur <b>Report_Open <\/b>mit der Ermittlung des Referenzdatums ab, indem Sie <\/p>\n<pre>If IsNull(Me.OpenArgs) Then\r\n     dateReferenzdatum = Date\r\nElse\r\n     dateReferenzdatum = Me.OpenArgs\r\nEnd If<\/pre>\n<p>durch<\/p>\n<pre>dateReferenzdatum = Me.Parent.txtReferenzdatum<\/pre>\n<p>und <\/p>\n<pre>Me.Filter = &quot;Kalenderdatum &gt;= &quot; &amp; SQLDatum(dateErsterKalendertag) &amp; &quot; AND Kalenderdatum &lt;= &quot; &amp; SQLDatum(dateLetzterKalendertag)\r\nMe.FilterOn = True<\/pre>\n<p>durch<\/p>\n<pre>Me.RecordSource = &quot;SELECT * FROM tblKalenderdaten WHERE Kalenderdatum &gt;= &quot; &amp; SQLDatum(dateErsterKalendertag) &amp; &quot; AND Kalenderdatum &lt;= &quot; &amp; SQLDatum(dateLetzterKalendertag)<\/pre>\n<p>ersetzen (jeweils in einer Zeile).<\/p>\n<p>Die erste &auml;nderung sorgt daf&uuml;r, dass der Unterbericht das Referenzdatum aus dem Textfeld <b>txtReferenzdatum <\/b>des Hauptberichts bezieht und die zweite ersetzt das Filtern der Datenherkunft (das sich in Unterberichten nicht einstellen l&auml;sst) durch eine Zeile, die das Kriterium direkt an die Datenherkunft anf&uuml;gt. Nun m&uuml;ssen Sie nur noch einen Hauptbericht erstellen, ein Textfeld namens <b>txtReferenzdatum <\/b>und den Unterbericht sowie einige Text- und Bezeichnungsfelder f&uuml;r die &uuml;berschrift mit Monat und Jahr sowie den Tagen in den Hauptbericht einf&uuml;gen &#8211; diese werden n&auml;mlich nicht aus dem Seitenkopf des Unterberichts &uuml;bernommen.<\/p>\n<p>Den kompletten Aufbau der in einen Hauptbericht eingebauten Monatsansicht finden Sie in den Berichten <b>rptMonatsansichtImUnterbericht <\/b>und <b>rptMonatsansicht<\/b> der Beispieldatenbank; der Entwurf sieht nun etwa wie in Bild 8 aus.<\/p>\n<p>            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Monatskalender-web-images\/pic008_opt.jpeg\" alt=\"pic008.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Der Entwurf der Monatsansicht als Unterbericht eines anderen Berichts<\/span><\/b><\/p>\n<p>Quellen<\/p>\n<p class=\"quellen\">[1] Flexible Berichte mit MoveLayout, NextRecord und PrintSection, Ausgabe 1\/2007, Shortlink 433<\/p>\n<p class=\"quellen\">[2] VBA-Funktionssammlung, Ausgabe 6\/2006, Shortlink 416<\/p>\n<p class=\"quellen\">[3] VBA-Funktionssammlung, Ausgabe 1\/2007, Shortlink 436<\/p>\n<p class=\"quellen\">[4] Malen nach Zahlen, Ausgabe 3\/2004, Shortlink 217<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Kalenderdruck.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/791AB2B2-24EE-4276-BF91-C29692DD6C26\/aiu_434.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit Access-Bericht l&auml;sst sich eine Menge anstellen, was allerdings einiges an Erfahrung und &Uuml;bung erfordert. Ein Monatskalender, der Datumsangaben in einem Raster von Wochen und Wochentagen enth&auml;lt, ist erstens eine recht interessante Aufgabe und zweitens macht er sich auf verschiedenen Dokumenten gut: Haben Sie schon einmal &uuml;berlegt, einem Kunden eine Monats&uuml;bersicht zu dem Tag mitzuliefern, an dem ein Ereignis wie zum Beispiel eine Bestellung erfolgt<\/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":[66012007,662007,44000024],"tags":[],"class_list":["post-55000434","post","type-post","status-publish","format-standard","hentry","category-66012007","category-662007","category-Berichte_und_Reporting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Monatskalender als Bericht drucken - 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\/Monatskalender_als_Bericht_drucken\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Monatskalender als Bericht drucken\" \/>\n<meta property=\"og:description\" content=\"Mit Access-Bericht l&auml;sst sich eine Menge anstellen, was allerdings einiges an Erfahrung und &Uuml;bung erfordert. Ein Monatskalender, der Datumsangaben in einem Raster von Wochen und Wochentagen enth&auml;lt, ist erstens eine recht interessante Aufgabe und zweitens macht er sich auf verschiedenen Dokumenten gut: Haben Sie schon einmal &uuml;berlegt, einem Kunden eine Monats&uuml;bersicht zu dem Tag mitzuliefern, an dem ein Ereignis wie zum Beispiel eine Bestellung erfolgt\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:08:15+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/b7c03e714ee54e539cfc62351a92c19c\" \/>\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=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Monatskalender als Bericht drucken\",\"datePublished\":\"2021-02-11T21:08:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/\"},\"wordCount\":1887,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/b7c03e714ee54e539cfc62351a92c19c\",\"articleSection\":[\"1\\\/2007\",\"2007\",\"Berichte und Reporting\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/\",\"name\":\"Monatskalender als Bericht drucken - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/b7c03e714ee54e539cfc62351a92c19c\",\"datePublished\":\"2021-02-11T21:08:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/b7c03e714ee54e539cfc62351a92c19c\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/b7c03e714ee54e539cfc62351a92c19c\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Monatskalender_als_Bericht_drucken\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Monatskalender als Bericht drucken\"}]},{\"@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":"Monatskalender als Bericht drucken - 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\/Monatskalender_als_Bericht_drucken\/","og_locale":"de_DE","og_type":"article","og_title":"Monatskalender als Bericht drucken","og_description":"Mit Access-Bericht l&auml;sst sich eine Menge anstellen, was allerdings einiges an Erfahrung und &Uuml;bung erfordert. Ein Monatskalender, der Datumsangaben in einem Raster von Wochen und Wochentagen enth&auml;lt, ist erstens eine recht interessante Aufgabe und zweitens macht er sich auf verschiedenen Dokumenten gut: Haben Sie schon einmal &uuml;berlegt, einem Kunden eine Monats&uuml;bersicht zu dem Tag mitzuliefern, an dem ein Ereignis wie zum Beispiel eine Bestellung erfolgt","og_url":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:08:15+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/b7c03e714ee54e539cfc62351a92c19c","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Monatskalender als Bericht drucken","datePublished":"2021-02-11T21:08:15+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/"},"wordCount":1887,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/b7c03e714ee54e539cfc62351a92c19c","articleSection":["1\/2007","2007","Berichte und Reporting"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/","url":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/","name":"Monatskalender als Bericht drucken - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/b7c03e714ee54e539cfc62351a92c19c","datePublished":"2021-02-11T21:08:15+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/b7c03e714ee54e539cfc62351a92c19c","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/b7c03e714ee54e539cfc62351a92c19c"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Monatskalender_als_Bericht_drucken\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Monatskalender als Bericht drucken"}]},{"@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\/55000434","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=55000434"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000434\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}