Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2006.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zeitpläne mit Access erstellen

Karl Donaubauer, Wien

Reservierungen für ein Hotel oder Restaurant, Belegungen von Konferenz- oder Schulungsräumen, Auslastung von Maschinen, Urlaubspläne oder Terminkalender. Der Bedarf für die grafische Darstellung von Ressourcen oder Belegungen auf einer Zeitachse ist vielfältig. Access bietet keine eingebauten Zeitpläne, aber mit relativ wenig Aufwand lassen sich durchaus vorzeigbare Ergebnisse erzielen.

Klassische Access-Zeitpläne

Es gibt verschiedene Ansätze für die Erstellung von Zeitplänen. In Versionen vor Access 2000 wurden oft ungebundene Formulare und Steuerelemente verwendet. Dabei stößt man schnell an die Grenzen von Access, denn die maximale Anzahl von Steuerelementen in einem Formular oder Bericht liegt bis Access 97 abhängig von den Steuerelementtypen bei 754 Stück. Die Dokumentationen von Microsoft nennen diese Zahl auch noch fü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.

Diese leichte Anhebung entschärft das Problem mit ungebundenen Steuerelementen jedoch nur geringfügig. Zum Glück hat Microsoft mit Access 2000 die Bedingte Formatierung eingeführt, die das Erstellen grafischer Zeitpläne wesentlich erleichtert. Man kann mit ihrer Hilfe nun vier verschiedene Zustä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.

Hinweis

Auf der Begleit-CD finden Sie die Beispiel-Datenbank im Format von Access 2000 mit allen hier behandelten Quellcodes. (

Hier sei gleich auf einen Bug der Bedingten Formatierung in Access 2003 hingewiesen: In der ungepatchten Version führt die Bedingte Formatierung beim Öffnen eines Formulars oft zu einem Endlosloop, wobei in der Statusleiste der Text "Berechnung läuft" angezeigt wird. Dieser Bug wurde von Microsoft stillschweigend mit dem Service Pack 1 für Office 2003 behoben. Bei Access 2003 sollten Sie also mindestens dieses SP1 installiert haben.

Beispielanwendung

In der Beispieldatenbank geht es um einen Reservierungsplan fü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önnen, denn das verwendete Schema ist auf viele Anwendungsgebiete übertragbar. Die Feld- und Steuerelementbezeichnungen sind zur leichten Weiterverwendung bewusst abstrakt gehalten. Die Datenbank besteht insgesamt nur aus vier Tabellen und zwei Formularen.

Startformular ist der Reservierungsplan. Abb. 1 zeigt den Plan fü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önnte leicht nur die belegten Zimmer anzeigen, aber die freien Ressourcen sind bei den meisten Zeitplänen eine wichtige Information.

Abb. 1: Zeitplan

Abb. 2: Reservierungsformular

Die Reservierungseinträ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))

Garantierte Reservierungen sind zum Beispiel grün, VIPs rot.

Beim Mausklick auf einen Eintrag öffnet sich das Reservierungsformular mit den Detaildaten zu dieser Reservierung (Abb. 2).

Wenn Sie hingegen auf ein nicht belegtes Feld des Planes klicken, öffnet sich ebenfalls das Reservierungsformular, wobei das angeklickte Zimmer und das Startdatum automatisch eingetragen werden, damit die Reservierung nur noch zu ergänzen ist. Ä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 "interaktiven" Möglichkeiten zeigen, die ein grafischer Zeitplan erschließt.

Am oberen Rand des Plan-Formulars können Sie mit zwei Kombinationsfeldern das Jahr und den Monat wählen, wobei der Plan nach jeder Aktualisierung neu aufgebaut wird. Daneben ist noch eine Schaltfläche zum ungefilterten Öffnen des Reservierungsformulars hinzugefügt, damit Sie die Testdaten besser einsehen und ändern können.

Tabellen

In der Tabelle tblKunden befinden sich nur ein paar Testdatensätze. Ähnlich in der Tabelle tblRaum, in der die Zimmernummern aufgelistet sind. Dort könnten genauso gut die Bezeichnungen für Konferenzräume stehen oder was immer Sie für Ihre Zwecke auf den vertikalen Achsen des Zeitplanes benötigen.

In der Tabelle tblReservierung mit den Reservierungsdetails sind die Kunden und Zimmer als Fremdschlüssel enthalten, das Start- und Enddatum sowie der Status der Reservierung. Diese drei schlichten Tabellen enthalten also die eigentlichen Anwendungsdaten.

Spannender ist die vierte Tabelle tblPlan, denn sie ist die Datenherkunft für den Zeitplan. Es handelt sich um eine reine Arbeitstabelle, deren Daten bei jedem Neuaufbau des Zeitplans gelöscht und durch die aktuellen ersetzt werden. Abb. 3 zeigt die Liste der Tabellen und die wichtigsten Felder von tblPlan.

Abb. 3 Entwurfsansicht von tblPlan

Abb. 4: Datenblattansicht von tblPlan

Abb. 4 zeigt Beispieldaten in tblPlan. Das erste Feld RowCaption1 wird mit den Zimmernummern befüllt.

RowCaption2 könnte nach dem gleichen Muster eine weitere Zeilenbeschriftung aufnehmen, wird hier aber nicht verwendet.

In den Feldern, die nur Item + Nummer heißen, also Item1, Item2 und so weiter, landet der Status der Reservierung.

Er bestimmt im Zeitplan-Formular unter Verwendung der Bedingten Formatierung das Aussehen der Einträge. Die Felder ItemTxt1, ItemTxt2 und so weiter enthalten die Beschriftung der Planeinträge, hier also die Kunden- oder Gästenamen.

Quellcode 1: Diese Routine füllt den Zeitplan.

Sub procFill()

    Dim db As DAO.Database

    Dim rsPlan As DAO.Recordset, rsDat As DAO.Recordset

    Dim ctl As Control

    Dim strSQL As String

    Dim dteComp As Date

    Dim intLastDay As Integer, i As Integer

    Dim lngColor As Long

    Set db = CurrentDb

    db.Execute "DELETE FROM tblPlan", dbFailOnError

    db.Execute "INSERT INTO tblPlan (RowCaption1) SELECT RmBez FROM tblRaum", dbFailOnError

    strSQL = "SELECT a.RmBez, a.RSStart, a.RSEnde, a.RSId, a.RSStatus, b.KDNachname" & _

            " FROM tblReservierung AS a LEFT JOIN tblKunde AS b ON a.KDId = b.KDId" & _

            " WHERE a.RSStart<=" & CLng(DateSerial(Me!cboJahr, Me!cboMonat + 1, 0)) & _

            " And a.RSEnde>" & CLng(DateSerial(Me!cboJahr, Me!cboMonat, 1)) & _

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.