{"id":55000353,"date":"2006-06-01T00:00:00","date_gmt":"2020-12-04T14:33:51","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=353"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Zeitplaene_mit_Access_erstellen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/","title":{"rendered":"Zeitpl&auml;ne mit Access erstellen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/72b7841584194268ad91d2b180d78055\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Karl Donaubauer, Wien<\/b><\/p>\n<p><b>Reservierungen f&uuml;r ein Hotel oder Restaurant, Belegungen von Konferenz- oder Schulungsr&auml;umen, Auslastung von Maschinen, Urlaubspl&auml;ne oder Terminkalender. Der Bedarf f&uuml;r die grafische Darstellung von Ressourcen oder Belegungen auf einer Zeitachse ist vielf&auml;ltig. Access bietet keine eingebauten Zeitpl&auml;ne, aber mit relativ wenig Aufwand lassen sich durchaus vorzeigbare Ergebnisse erzielen.<\/b><\/p>\n<p>Es gibt verschiedene Ans&auml;tze f&uuml;r die Erstellung von Zeitpl&auml;nen. In Versionen vor Access 2000 wurden oft ungebundene Formulare und Steuerelemente verwendet. Dabei st&ouml;&szlig;t man schnell an die Grenzen von Access, denn die maximale Anzahl von Steuerelementen in einem Formular oder Bericht liegt bis Access 97 abh&auml;ngig von den Steuerelementtypen bei 754 St&uuml;ck. Die Dokumentationen von Microsoft nennen diese Zahl auch noch f&uuml;r neuere Versionen. Das ist falsch. Richtig ist: In Access 2000 kann ein Formular maximal 801 Steuerelemente und in Access 2002 und 2003  895 Steuerelemente enthalten.<\/p>\n<p>Diese leichte Anhebung entsch&auml;rft das Problem mit ungebundenen Steuerelementen jedoch nur geringf&uuml;gig. Zum Gl&uuml;ck hat Microsoft mit Access 2000 die Bedingte Formatierung eingef&uuml;hrt, die das Erstellen grafischer Zeitpl&auml;ne wesentlich erleichtert. Man kann mit ihrer Hilfe nun vier verschiedene Zust&auml;nde optisch darstellen und dabei ein gebundenes Formular verwenden. Dadurch spielt die Begrenzung bei den Steuerelementen keine Rolle mehr. Unsere Beispielanwendung funktioniert also mit Versionen ab Access 2000 und kann einfach in neuere Versionen konvertiert werden.<\/p>\n<h3>Hinweis<\/h3>\n<p>Auf der Begleit-CD finden Sie die Beispiel-Datenbank im Format von Access 2000 mit allen hier behandelten Quellcodes. <\/p>\n<p>Hier sei gleich auf einen Bug der Bedingten Formatierung in Access 2003 hingewiesen: In der ungepatchten Version f&uuml;hrt die Bedingte Formatierung beim &ouml;ffnen eines Formulars oft zu einem Endlosloop, wobei in der Statusleiste der Text &#8222;Berechnung l&auml;uft&#8220; angezeigt wird. Dieser Bug wurde von Microsoft stillschweigend mit dem Service Pack 1 f&uuml;r Office 2003 behoben. Bei Access 2003 sollten Sie also mindestens dieses SP1 installiert haben.<\/p>\n<p>In der Beispieldatenbank geht es um einen Reservierungsplan f&uuml;r ein Hotel, der die Reservierungen monatsweise anzeigt. Wenn Sie sich die Datenbank genau ansehen und als Vorlage verwenden, werden Sie sie sicher Ihren Zeitplan-Zwecken anpassen k&ouml;nnen, denn das verwendete Schema ist auf viele Anwendungsgebiete &uuml;bertragbar. Die Feld- und Steuerelementbezeichnungen sind zur leichten Weiterverwendung bewusst abstrakt gehalten. Die Datenbank besteht insgesamt nur aus vier Tabellen und zwei Formularen.<\/p>\n<p>Startformular ist der Reservierungsplan. Bild 1 zeigt den Plan f&uuml;r April 2006, als die Auslastung des Hotels nicht sehr gut war, was aber nicht am Plan, sondern am schlechten Wetter lag. Am oberen und unteren Rand sehen Sie die Tage des Monats. Samstage und Sonntage sind farblich hervorgehoben. Links und rechts sind alle Zimmer des Hotels aufgelistet. Man k&ouml;nnte leicht nur die belegten Zimmer anzeigen, aber die freien Ressourcen sind bei den meisten Zeitpl&auml;nen eine wichtige Information.<\/p>\n<p><IMG height=\"360\" src=\"..\/fileadmin\/_temp_\/{4E42A8FC-29AD-4936-8BBC-86666C8AA4CD}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Zeitplan<\/span><\/b><\/p>\n<p><IMG height=\"426\" src=\"..\/fileadmin\/_temp_\/{4E42A8FC-29AD-4936-8BBC-86666C8AA4CD}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Reservierungsformular<\/span><\/b><\/p>\n<p>Die Reservierungseintr&auml;ge im Plan zeigen als Beschriftung den Namen des Kunden oder Gastes. Durch ihre unterschiedliche Hintergrundfarbe ist zudem auf den ersten Blick der Status der Reservierung erkennbar. ((sonst 2x zeigen))<\/p>\n<p>Garantierte Reservierungen sind zum Beispiel gr&uuml;n, VIPs rot.<\/p>\n<p>Beim Mausklick auf einen Eintrag &ouml;ffnet sich das Reservierungsformular mit den Detaildaten zu dieser Reservierung (siehe Bild 2).<\/p>\n<p>Wenn Sie hingegen auf ein nicht belegtes Feld des Planes klicken, &ouml;ffnet sich ebenfalls das Reservierungsformular, wobei das angeklickte Zimmer und das Startdatum automatisch eingetragen werden, damit die Reservierung nur noch zu erg&auml;nzen ist. &auml;nderungen im Detailformular werden gleich beim Speichern des Datensatzes, also im Ereigniscode Bei Aktualisierung des Formulars, im Reservierungsplan wiedergegeben. Das Detailformular ist ansonsten einfach gehalten und soll nur die &#8222;interaktiven&#8220; M&ouml;glichkeiten zeigen, die ein grafischer Zeitplan erschlie&szlig;t.<\/p>\n<p>Am oberen Rand des Plan-Formulars k&ouml;nnen Sie mit zwei Kombinationsfeldern das Jahr und den Monat w&auml;hlen, wobei der Plan nach jeder Aktualisierung neu aufgebaut wird. Daneben ist noch eine Schaltfl&auml;che zum ungefilterten &ouml;ffnen des Reservierungsformulars hinzugef&uuml;gt, damit Sie die Testdaten besser einsehen und &auml;ndern k&ouml;nnen.<\/p>\n<p>In der Tabelle tblKunden befinden sich nur ein paar Testdatens&auml;tze. &auml;hnlich in der Tabelle tblRaum, in der die Zimmernummern aufgelistet sind. Dort k&ouml;nnten genauso gut die Bezeichnungen f&uuml;r Konferenzr&auml;ume stehen oder was immer Sie f&uuml;r Ihre Zwecke auf den vertikalen Achsen des Zeitplanes ben&ouml;tigen.<\/p>\n<p>In der Tabelle tblReservierung mit den Reservierungsdetails sind die Kunden und Zimmer als Fremdschl&uuml;ssel enthalten, das Start- und Enddatum sowie der Status der Reservierung. Diese drei schlichten Tabellen enthalten also die eigentlichen Anwendungsdaten.<\/p>\n<p>Spannender ist die vierte Tabelle tblPlan, denn sie ist die Datenherkunft f&uuml;r den Zeitplan. Es handelt sich um eine reine Arbeitstabelle, deren Daten bei jedem Neuaufbau des Zeitplans gel&ouml;scht und durch die aktuellen ersetzt werden. Bild 3 zeigt die Liste der Tabellen und die wichtigsten Felder von tblPlan.<\/p>\n<p><IMG height=\"536\" src=\"..\/fileadmin\/_temp_\/{4E42A8FC-29AD-4936-8BBC-86666C8AA4CD}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b>Abb. 3 Entwurfsansicht von tblPlan<\/b><\/p>\n<p><IMG height=\"267\" src=\"..\/fileadmin\/_temp_\/{4E42A8FC-29AD-4936-8BBC-86666C8AA4CD}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Datenblattansicht von tblPlan<\/span><\/b><\/p>\n<p>Bild 4 zeigt Beispieldaten in tblPlan. Das erste Feld RowCaption1 wird mit den Zimmernummern bef&uuml;llt.<\/p>\n<p>RowCaption2 k&ouml;nnte nach dem gleichen Muster eine weitere Zeilenbeschriftung aufnehmen, wird hier aber nicht verwendet. <\/p>\n<p><!--30percent--><\/p>\n<p>In den Feldern, die nur Item + Nummer hei&szlig;en, also Item1, Item2 und so weiter, landet der Status der Reservierung.<\/p>\n<p>Er bestimmt im Zeitplan-Formular unter Verwendung der Bedingten Formatierung das Aussehen der Eintr&auml;ge. Die Felder ItemTxt1, ItemTxt2 und so weiter enthalten die Beschriftung der Planeintr&auml;ge, hier also die Kunden- oder G&auml;stenamen.<\/p>\n<p><b>Quellcode 1: Diese Routine f&uuml;llt den Zeitplan.<\/b><\/p>\n<pre>Sub procFill()\r\n    Dim db As DAO.Database\r\n    Dim rsPlan As DAO.Recordset, rsDat As DAO.Recordset\r\n    Dim ctl As Control\r\n    Dim strSQL As String\r\n    Dim dteComp As Date\r\n    Dim intLastDay As Integer, i As Integer\r\n    Dim lngColor As Long\r\n    Set db = CurrentDb\r\n    db.Execute \"DELETE FROM tblPlan\", dbFailOnError\r\n    db.Execute \"INSERT INTO tblPlan (RowCaption1) SELECT RmBez FROM tblRaum\", dbFailOnError\r\n    strSQL = \"SELECT a.RmBez, a.RSStart, a.RSEnde, a.RSId, a.RSStatus, b.KDNachname\" & _\r\n            \" FROM tblReservierung AS a LEFT JOIN tblKunde AS b ON a.KDId = b.KDId\" & _\r\n            \" WHERE a.RSStart&lt;=\" & CLng(DateSerial(Me!cboJahr, Me!cboMonat + 1, 0)) & _\r\n            \" And a.RSEnde&gt;\" & CLng(DateSerial(Me!cboJahr, Me!cboMonat, 1)) & _\r\n            \" ORDER BY a.RSStart, a.RSEnde\"\r\n    Set rsPlan = db.OpenRecordset(\"tblPlan\", dbOpenDynaset)\r\n    Set rsDat = db.OpenRecordset(strSQL, dbOpenDynaset)\r\n    For i = 1 To 31\r\n        Me(\"cptItem\" & i).Caption = \"\"\r\n        Me(\"cpt2Item\" & i).Caption = \"\"\r\n        Me(\"cptItem\" & i).BackColor = vbWhite\r\n        Me(\"cpt2Item\" & i).BackColor = vbWhite\r\n    Next\r\n    intLastDay = Day(DateSerial(Me!cboJahr, Me!cboMonat + 1, 0))\r\n    For i = 1 To intLastDay\r\n        Me(\"cptItem\" & i).Caption = i\r\n        Me(\"cpt2Item\" & i).Caption = i\r\n        Select Case Weekday(DateSerial(Me!cboJahr, Me!cboMonat, i), vbMonday)\r\n            Case 6\r\n                lngColor = vbBlue\r\n            Case 7\r\n                lngColor = vbRed\r\n            Case Else\r\n                lngColor = vbBlack\r\n        End Select\r\n        Me(\"cptItem\" & i).BackColor = lngColor\r\n        Me(\"cpt2Item\" & i).BackColor = lngColor\r\n    Next i\r\n    Do Until rsDat.EOF\r\n        rsPlan.FindFirst \"RowCaption1 = ''\" & rsDat!RmBez & \"''\"\r\n        rsPlan.Edit\r\n        For i = 1 To intLastDay\r\n            dteComp = DateSerial(Me!cboJahr, Me!cboMonat, i)\r\n            If dteComp &gt;= rsDat!RSStart And dteComp &lt; rsDat!RSEnde Then\r\n                rsPlan(\"Item\" & i) = rsDat!RSStatus\r\n                rsPlan(\"ItemTxt\" & i) = rsDat!KDNachname\r\n                rsPlan(\"ItemVal\" & i) = rsDat!RSId\r\n            End If\r\n        Next i\r\n        rsPlan.Update\r\n        rsDat.MoveNext\r\n    Loop\r\n    procFormat\r\n    Me.Requery\r\nEnd Sub<\/pre>\n<p>Die Felder ItemVal1, ItemVal2 und so weiter enthalten die eindeutige Id der Reservierung. Damit ist es im Zeitplan m&ouml;glich, bei Klick auf ein Textfeld das Reservierungsformular mit der gew&auml;hlten Reservierung zu &ouml;ffnen.<\/p>\n<p>Zwecks &uuml;bersichtlichkeit wurde praktisch der komplette Code der Anwendung im Modul des Formulars frmPlan belassen.<\/p>\n<p>Wenn Sie mehrere Zeitpl&auml;ne nach diesem Muster aufbauen m&ouml;chten, ist es eventuell effizienter, Teile des Codes in ein Standardmodul auszulagern. frmPlan hat als Datenherkunft die Tabelle tblPlan, die zuerst per Code gef&uuml;llt werden muss.<\/p>\n<p>Zur Darstellung der Reservierungen gibt es im Detailbereich, das hei&szlig;t f&uuml;r jedes Hotelzimmer, pro Monatstag ein ungebundenes Textfeld.<\/p>\n<p>Diese Textfelder sind benannt nach dem Muster &#8222;txtItem&#8220; + Monatstag, also txtItem1 bis txtItem31 (siehe Bild 5).<\/p>\n<p>In der Ereignisprozedur Beim &ouml;ffnen des Formulares wird die Sub procFill aufgerufen. Das passiert bei jedem Neuaufbau des Plans, etwa beim &auml;ndern des Jahres oder Monats oder Nach Aktualisierung des Reservierungsformulars.<\/p>\n<p>Quellcode 1 zeigt diese zentrale Prozedur der Anwendung. In der Beispieldatenbank ist der Code nat&uuml;rlich um Kommentare und Fehlerbehandlungen erg&auml;nzt.<\/p>\n<p>In dieser Prozedur wird zuerst per SQL und Execute die Tabelle tblPlan geleert und dann mit den Zimmernummern aus tblRaum gef&uuml;llt. Der folgende SQL-String kombiniert die zum weiteren Bef&uuml;llen des Zeitplans ben&ouml;tigten Felder der Tabellen tblReservierung und tblKunden. Im WHERE-Abschnitt geht es darum, mit den Daten aus den Kombinationsfeldern f&uuml;r Jahr und Monat die zeitlich zutreffenden Reservierungen aus der tblReservierung zu filtern.<\/p>\n<p><IMG height=\"322\" src=\"..\/fileadmin\/_temp_\/{4E42A8FC-29AD-4936-8BBC-86666C8AA4CD}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Entwurfsansicht von frmPlan<\/span><\/b><\/p>\n<p>Der erste Filterausdruck lautet folgenderma&szlig;en:<\/p>\n<pre>a.RSStart&lt;=\" & CLng(DateSerial(Me!cboJahr, Me!cboMonat + 1, 0)) <\/pre>\n<p>Die Funktion DateSerial erzeugt ein Datum aus den Parametern f&uuml;r Jahr, Monat und Tag. In diesem Fall wird mit Monatswert +1 und Tag 0 das Datum des letzten Monatstages eruiert. <\/p>\n<p>Die Funktion CLng &uuml;bergibt das Datum als Long-Zahl an den SQL-String. Das ist eine k&uuml;rzere Alternative zu der sonst notwendigen Formatierung im amerikanischen oder ISO-Datumsformat.<\/p>\n<p>Im Filterausdruck wird also verlangt, dass das Startdatum der Reservierung kleiner oder gleich dem letzten Tag des anzuzeigenden Monats ist.<\/p>\n<p>Der zweite Filterausdruck lautet:<\/p>\n<pre>a.RSEnde&gt;\" & CLng(DateSerial(Me!cboJahr, Me!cboMonat, 1)) <\/pre>\n<p>Das Enddatum der Reservierung muss also nach dem ersten Monatstag liegen.<\/p>\n<p>Die unterschiedliche Behandlung des Startdatums (&lt;=) und des Enddatums (&gt;) ist notwendig, weil bei Hotelreservierungen der Starttag durch diesen Gast als belegt angezeigt wird.<\/p>\n<p>Am Abreisetag hingegen wird das Zimmer als frei angezeigt oder bereits als vom n&auml;chsten Gast belegt.<\/p>\n<p><b>Quellcode 2: Erzeugen der Ausdr&uuml;cke f&uuml;r die bedingte Formatierung<\/b><\/p>\n<pre>Private Sub procFormat()\r\n    Dim ctl As Control\r\n    Dim lngIndex As Long\r\n    For Each ctl In Me.Controls\r\n        If ctl.Name Like \"txtItem*\" Then\r\n            With ctl\r\n                lngIndex = Mid(ctl.Name, 8)\r\n                .ControlSource = \"=ItemTxt\" & lngIndex\r\n                .FormatConditions.Delete\r\n                .FormatConditions.Add acExpression, acEqual, \"Item\" & lngIndex & \"=1\"\r\n                .FormatConditions(0).BackColor = vbGreen\r\n                .FormatConditions.Add acExpression, acEqual, \"Item\" & lngIndex & \"=3\"\r\n                .FormatConditions(1).BackColor = vbRed\r\n                .FormatConditions.Add acExpression, acEqual, \"Item\" & lngIndex & \"=4\"\r\n                .FormatConditions(2).BackColor = -2147483633\r\n            End With\r\n        End If\r\n    Next ctl\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3: Diese Funktion sorgt f&uuml;r die Anzeige von Details einer Buchung<\/b><\/p>\n<pre>Private Function fctDetails()\r\n    If Not IsNull(Screen.ActiveControl.Value) Then\r\n        DoCmd.OpenForm \"frmReservierung\", , , \"RSId = \" & Me(\"ItemVal\" _            & Mid(Screen.ActiveControl.Name, 8))\r\n    Else\r\n        DoCmd.OpenForm \"frmReservierung\", , , , acFormAdd\r\n        Forms!frmReservierung!RmBez = Me!RowCaption1\r\n        Forms!frmReservierung!RSStart = _            DateSerial(Me!cboJahr, Me!cboMonat, Mid(Me.ActiveControl.Name, 8))\r\n    End If\r\nEnd Function<\/pre>\n<p>Wenn Sie hingegen die Belegung von Konferenzr&auml;umen oder einen Urlaubsplan erstellen, m&uuml;ssen Sie als Ende-Operator ebenfalls &gt;= verwenden, denn bei diesen Anwendungsf&auml;llen gelten beide Grenzdaten als belegt.<\/p>\n<p>In der folgenden Schleife werden f&uuml;r alle 31 m&ouml;glichen Monatstage zuerst die &uuml;berschriften und ihre Hintergrundfarbe zur&uuml;ckgesetzt, damit nicht zum Beispiel beim Wechseln von Januar zu Februar die &uuml;berschriften f&uuml;r Tag 29, 30 und 31 stehen bleiben.<\/p>\n<p>Danach wird f&uuml;r den ersten Tag bis zum Monatsletzten die Tageszahl eingesetzt und je nach Wochentag der Hintergrund eingef&auml;rbt.<\/p>\n<p>In der letzten Do-Loop-Schleife werden die Reservierungsdaten in die Plantabelle &uuml;bertragen.<\/p>\n<p>Dazu wird zuerst mit FindFirst in tblPlan das zur Reservierung geh&ouml;rende Zimmer gesucht und dann f&uuml;r alle Tage des Monats gepr&uuml;ft, ob sie innerhalb der Grenzen der aktuell bearbeiteten Reservierung liegen.<\/p>\n<p>Auch hier gilt f&uuml;r die unterschiedlichen Operatoren bei Start und Ende das beim Filtern angef&uuml;hrte. Item wird mit dem Status der Reservierung bef&uuml;llt, ItemTxt mit dem Nachnamen des Kunden, ItemVal mit der Reservierungs-Id.<\/p>\n<p>Am Ende sorgt ein Requery auf das Formular f&uuml;r die Anzeige der soeben vorgenommenen Eintr&auml;ge.<\/p>\n<p>In Quellcode 2 sehen Sie die beiden anderen relevanten Codes im frmPlan.<\/p>\n<p>Die Sub procFormat wird einmalig beim &ouml;ffnen des Formulars aufgerufen und erzeugt vor allem die Ausdr&uuml;cke f&uuml;r die Bedingte Formatierung.<\/p>\n<p>Es werden alle Controls durchlaufen, deren Name mit &#8222;txtItem&#8220; beginnt, also die Textfelder txtItem1 bis txtItem31, die die Planeintr&auml;ge darstellen. Sie erhalten zun&auml;chst als Steuerelementinhalt den mit der Tagesnummer korrespondierenden Eintrag im Feld ItemTxt der Tabelle tblPlan.<\/p>\n<p>Dieses Feld enth&auml;lt den Status der Reservierung. Im Beispiel ist das der Wert 1 f&uuml;r best&auml;tigte Reservierungen, 2 f&uuml;r nicht best&auml;tigte, 3 f&uuml;r VIPs und 4 f&uuml;r Optionen.<\/p>\n<p>Die Eigenschaft FormatConditions der Textfelder erlaubt per Code genau das, was Sie auch interaktiv im Men&uuml; Format\/Bedingte Formatierung einstellen k&ouml;nnen.<\/p>\n<p>Sie k&ouml;nnten sich diesen Teil des Codes also sparen, wenn Sie alle betroffenen Textfelder markieren und die Einstellungen &uuml;ber den Men&uuml;punkt vornehmen. Die Codevariante ist dynamischer.<\/p>\n<p>Wenn Sie in Ihren Zeitpl&auml;nen sehr viele Felder verwenden, kann es aber sein, dass die Codevariante sp&uuml;rbar langsamer wird als die Voreinstellung &uuml;ber den Men&uuml;punkt.<\/p>\n<p>Mit FormatConditions.Delete werden zuerst alle eventuell bereits vorhandenen Formatierungseinstellungen gel&ouml;scht. Danach wird eingestellt, dass bei 1 der Hintergrund gr&uuml;n wird, bei 3 rot, bei 4 systemgrau. Damit sind die drei mit der Bedingten Formatierung einstellbaren Formate ersch&ouml;pft. Die vierte Variante ergibt sich daraus, dass der Hintergrund gar nicht eingef&auml;rbt wird. In unserem Fall sind nicht best&auml;tigte Reservierungen (Status = 2) eben nur durch den Kundennamen im Textfeld gekennzeichnet.<\/p>\n<p>Die letzte erw&auml;hnenswerte Prozedur ist die Funktion fctDetails. Sie ist als Funktion angelegt, weil sie direkt in die Eigenschaft Beim Klicken der Textfelder txtItem1 bis txtItem31 eingetragen ist.<\/p>\n<p>Der Code pr&uuml;ft, ob das aktuelle Steuerelement einen Wert besitzt, ob also eine Reservierung vorliegt. In diesem Fall wird das Reservierungsformular mit der passenden Reservierung ge&ouml;ffnet.<\/p>\n<p>Falls noch keine Reservierung f&uuml;r dieses Zimmer an diesem Tag vorliegt, wird das Reservierungsformular im Hinzuf&uuml;gen-Modus ge&ouml;ffnet und das angeklickte Zimmer und Startdatum &uuml;bergeben.<\/p>\n<p>Es gibt viele unterschiedliche Varianten von Zeitpl&auml;nen. Nicht nur im Hinblick auf die darzustellenden Inhalte, sondern auch auf die Zeitintervalle.<\/p>\n<p>Mit dem hier vorgestellten Zeitplan k&ouml;nnen zum Beispiel in einem Zoo F&uuml;hrungen im Viertelstundentakt geplant werden. Dabei sind nur die Zeitberechnungen etwas komplizierter und die Beschriftungen ausf&uuml;hrlicher. Das Vorgehen an sich ist das gleiche.<\/p>\n<p>Ein Zeitplan mit reinen Access-Mitteln bietet nat&uuml;rlich nicht den Komfort von ActiveX-Steuerelementen, etwa &uuml;ppiges Drag&#8220;n Drop.<\/p>\n<p>Daf&uuml;r ist er aber nicht sonderlich kompliziert zu erstellen, kostet nur etwas Anpassungsarbeit und hat keine Weitergabe- und Verweis-Problematik. Den Beispielplan k&ouml;nnen Sie mit allerlei Effekten aufwerten, zum Beispiel mit Icons, einem Kalender zur bequemeren Datumswahl oder &uuml;ber den Textfeldern liegenden Schaltfl&auml;chen, damit kein Eingabecursor sichtbar wird. Viel Spa&szlig; damit in der Praxis!<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Zeitplan.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/5445063F-9789-4B85-A7D4-17F15B59B292\/aiu_353.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reservierungen f&uuml;r ein Hotel oder Restaurant, Belegungen von Konferenz- oder Schulungsr&auml;umen, Auslastung von Maschinen, Urlaubspl&auml;ne oder Terminkalender. Der Bedarf f&uuml;r die grafische Darstellung von Ressourcen oder Belegungen auf einer Zeitachse ist vielf&auml;ltig. Access bietet keine eingebauten Zeitpl&auml;ne, aber mit relativ wenig Aufwand lassen sich durchaus vorzeigbare Ergebnisse erzielen.<\/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":[662006,66032006,44000027,44000023],"tags":[],"class_list":["post-55000353","post","type-post","status-publish","format-standard","hentry","category-662006","category-66032006","category-Loesungen","category-Mit_Formularen_arbeiten"],"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>Zeitpl&auml;ne mit Access erstellen - 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\/Zeitplaene_mit_Access_erstellen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zeitpl&auml;ne mit Access erstellen\" \/>\n<meta property=\"og:description\" content=\"Reservierungen f&uuml;r ein Hotel oder Restaurant, Belegungen von Konferenz- oder Schulungsr&auml;umen, Auslastung von Maschinen, Urlaubspl&auml;ne oder Terminkalender. Der Bedarf f&uuml;r die grafische Darstellung von Ressourcen oder Belegungen auf einer Zeitachse ist vielf&auml;ltig. Access bietet keine eingebauten Zeitpl&auml;ne, aber mit relativ wenig Aufwand lassen sich durchaus vorzeigbare Ergebnisse erzielen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-04T14:33:51+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg02.met.vgwort.de\/na\/72b7841584194268ad91d2b180d78055\" \/>\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\\\/Zeitplaene_mit_Access_erstellen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Zeitpl&auml;ne mit Access erstellen\",\"datePublished\":\"2020-12-04T14:33:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/\"},\"wordCount\":2087,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/72b7841584194268ad91d2b180d78055\",\"articleSection\":[\"2006\",\"3\\\/2006\",\"L\u00f6sungen\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/\",\"name\":\"Zeitpl&auml;ne mit Access erstellen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/72b7841584194268ad91d2b180d78055\",\"datePublished\":\"2020-12-04T14:33:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/72b7841584194268ad91d2b180d78055\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/72b7841584194268ad91d2b180d78055\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Zeitplaene_mit_Access_erstellen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zeitpl&auml;ne mit Access erstellen\"}]},{\"@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":"Zeitpl&auml;ne mit Access erstellen - 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\/Zeitplaene_mit_Access_erstellen\/","og_locale":"de_DE","og_type":"article","og_title":"Zeitpl&auml;ne mit Access erstellen","og_description":"Reservierungen f&uuml;r ein Hotel oder Restaurant, Belegungen von Konferenz- oder Schulungsr&auml;umen, Auslastung von Maschinen, Urlaubspl&auml;ne oder Terminkalender. Der Bedarf f&uuml;r die grafische Darstellung von Ressourcen oder Belegungen auf einer Zeitachse ist vielf&auml;ltig. Access bietet keine eingebauten Zeitpl&auml;ne, aber mit relativ wenig Aufwand lassen sich durchaus vorzeigbare Ergebnisse erzielen.","og_url":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-12-04T14:33:51+00:00","og_image":[{"url":"http:\/\/vg02.met.vgwort.de\/na\/72b7841584194268ad91d2b180d78055","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\/Zeitplaene_mit_Access_erstellen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Zeitpl&auml;ne mit Access erstellen","datePublished":"2020-12-04T14:33:51+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/"},"wordCount":2087,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/72b7841584194268ad91d2b180d78055","articleSection":["2006","3\/2006","L\u00f6sungen","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/","url":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/","name":"Zeitpl&auml;ne mit Access erstellen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/72b7841584194268ad91d2b180d78055","datePublished":"2020-12-04T14:33:51+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/72b7841584194268ad91d2b180d78055","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/72b7841584194268ad91d2b180d78055"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Zeitplaene_mit_Access_erstellen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Zeitpl&auml;ne mit Access erstellen"}]},{"@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\/55000353","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=55000353"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000353\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}