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/2012.

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

Zusammenfassung

Lernen Sie eine Lösung kennen, mit der Sie herkömmliche Strichlisten ersetzen.

Techniken

Datenmodellierung, Formulare, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

AktivitaetenZaehlen.mdb

Shortlink

www.access-im-unternehmen.de/840

Aktivitäten zählen

André Minhorst, Duisburg

Führen Sie Strichlisten? Zum Beispiel über Anrufe bei Kunden, Störungen durch Arbeitskollegen, verzehrten Kaffee oder andere Dinge, die Sie während der Arbeit aufzeichnen möchten? Damit ist es nun vorbei: Wir bieten Ihnen den ultimativen Aktivitätenzähler. Damit definieren Sie beliebig viele Aktivitäten in verschiedenen Kategorien und erhöhen die Anzahl mit einem einfachen Mausklick. Die Aktivitäten werden natürlich zur späteren Auswertung inklusive Datum gespeichert.

Das Formular aus Abb. 1 ist das wesentliche Element der Benutzeroberfläche des Aktivitätenzählers. Dieses Formular erlaubt das Wechseln des aktuellen Tages und zeigt jeweils die Anzahl der verschiedenen Aktivitäten für das aktuelle Datum an.

pic002.png

Abb. 1: Aktivitäten zählen per Mausklick

Mit den beiden Schaltflächen rechts neben dem Textfeld zur Eingabe des Datums schalten Sie jeweils einen Tag vor oder zurück. Das Datumstextfeld selbst ist mit der Klasse clsDatebox ausgestattet.

Das bedeutet, dass Sie die Eingabemarke auf einem Datumsteil platzieren können (entweder Tag, Monat oder Jahr) und den Wert mit den Tasten Nach oben und Nach unten einstellen können.

Unten zeigt das Formular die vorhandenen Aktivitätsbezeichnungen an, das Textfeld neben der jeweiligen Aktivität markiert die Anzahl für den aktuellen Tag. Die beiden Schaltflächen rechts neben der Anzahl dienen zum Erhöhen oder Vermindern des angezeigten Wertes. Negative Werte können auf diese Weise nicht eingetragen werden.

Fehlt noch die Schaltfläche mit der Beschriftung Aktivitäten bearbeiten. Diese öffnet den Dialog aus Abb. 2, der eine Übersicht der vorhandenen Aktivitätsbezeichnungen anzeigt. Markieren Sie einen Eintrag und klicken auf die Schaltfläche Aktivitätsbezeichnung löschen, wird diese entfernt.

pic003.png

Abb. 2: Verwalten der Aktivitätsbezeichnungen

Ein Doppelklick auf einen Listenfeldeintrag öffnet die Detailansicht mit dem gewünschten Datensatz und die Schaltfläche Neue Aktivitätsbezeichnung zeigt den gleichen Dialog zur Eingabe einer neuen Aktivitätsbezeichnung an.

Dieser Dialog sieht wie in Abb. 3 aus und enthält zwei Eingabefelder. Eines nimmt die Bezeichnung der Aktivität auf und das andere erwartet die Auswahl einer der vorhandenen Kategorien. Sie können auch neue Kategorien eingeben oder die vorhandenen Kategorien verwalten. Dies erledigen Sie mit den beiden Dialogen aus Abb. 4.

pic004.png

Abb. 3: Anlegen neuer Aktivitätsbezeichnungen

pic005.png

Abb. 4: Verwalten und Anlegen neuer Kategorien

Datenmodell des Aktivitätszählers

Das Datenmodell der Datenbank ist überschaubar. Es enthält drei Tabellen und sieht wie in Abb. 5 aus. Die Tabelle tblAktivitaetskategorien enthält lediglich das Primärschlüsselfeld AktivitaetskategorieID und das Feld zur Eingabe der Bezeichnung der Kategorie.

pic001.png

Abb. 5: Datenmodell der Aktivitäten-Datenbank

Die Tabelle tblAktivitaetsbezeichnungen enthält die Namen der verschiedenen Aktivitäten. Außerdem verweist sie mit dem Fremdschlüsselfeld AktivitaetskategorieID auf die Tabelle tblAktivitaetskategorien, damit jeder Bezeichnung eine Kategorie zugewiesen werden kann.

Fehlt noch die Tabelle tblAktivitaeten. Diese enthält zunächst das Fremdschlüsselfeld AktivitaetsbezeichnungID, mit dem Sie die jeweilige Aktivität festlegen.

Das Feld Aktivitaetsdatum enthält das Datum, an dem die im Feld Aktivitaetsanzahl gespeicherte Anzahl der entsprechenden Aktivität aufgezeichnet wurde.

Damit wird deutlich, dass Sie für die beiden Felder AktivitaetsbezeichnungID und Aktivitaetsdatum einen eindeutigen, zusammengesetzten Schlüssel definieren müssen: Für jede Aktivität soll nur eine Anzahl pro Tag aufgezeichnet werden.

Aktivitäten pflegen

Schauen wir uns zunächst die Formulare zur Verwaltung der Aktivitätsbezeichnungen und Aktivitätskategorien an. Das Formular frmAktivitaetsbezeichnungen ist in Abb. 6 abgebildet und enthält ein Listenfeld namens lst. Das Listenfeld soll die Namen der Aktivitätsbezeichnung und der Kategorie anzeigen.

pic007.png

Abb. 6: Das Formular zum Verwalten der Aktivitätsbezeichnungen in der Entwurfsansicht

Deshalb enthält die als Datensatzherkunft verwendete Abfrage die beiden Tabellen tblAktivitaetsbezeichnungen und tblAktivitaetskategorien (s. Abb. 7). Zusätzlich liefert die Datensatzherkunft den Wert des Feldes AktivitaetsbezeichnungID. Damit dieses nicht angezeigt wird, sind die Eigenschaften Spaltenanzahl und Spaltenbreiten auf die Werte 3 und 0cm;6cm eingestellt (die dritte Spalte wird auf der verbleibenden Breite angezeigt).

pic006.png

Abb. 7: Datenherkunft des Listenfeldes zur Anzeige der Aktivitätsbezeichnungen

Ein Doppelklick auf einen Eintrag im Listenfeld löst die Prozedur aus Listing 1 aus. Diese prüft zunächst, ob der Doppelklick überhaupt einen Eintrag getroffen hat.

Listing 1: Öffnen des Formulars zum Bearbeiten von Aktivitätsdetails

Private Sub lst_DblClick(Cancel As Integer)

    If Not IsNull(Me!lst) Then

        DoCmd.OpenForm "frmAktivitaetsbezeichnungdetails", WindowMode:=acDialog, _

            WhereCondition:="AktivitaetsbezeichnungID = " & Me!lst, DataMode:=acFormEdit

        Me!lst.Requery

    End If

End Sub

Falls ja, öffnet die DoCmd.OpenForm-Methode das Formular frmAktivitaetsbezeichnungDetails zum Bearbeiten eines bestehenden Datensatzes. Dieser wird mit dem Parameter WhereCondition auf den im Listenfeld angeklickten Eintrag festgelegt.

Wenn Sie einen neuen Eintrag anlegen möchten, klicken Sie auf die Schaltfläche cmdNeu.

Dies löst die folgende Prozedur aus, die das gleiche Formular öffnet - nur diesmal mit dem Wert acFormAdd für den Parameter DataMode. Anschließend wird das Listenfeld aktualisiert:

Private Sub cmdNeu_Click()

    DoCmd.OpenForm "frmAktivitaetsbezeichnungDetails", WindowMode:=acDialog, DataMode:=acFormAdd

    Me!lst.Requery

End Sub

Ein Klick auf die Schaltfläche cmdLoeschen hingegen löst die Prozedur aus Listing 2 aus. Diese Prozedur prüft ebenfalls, ob der Benutzer überhaupt auf einen Eintrag geklickt hat und nicht etwa in den leeren Bereich des Listenfeldes.

Listing 2: Löschen einer Aktivitätsbezeichnung

Private Sub cmdLoeschen_Click()

    Dim db As DAO.Database

    If Not IsNull(Me!lst) Then

        If MsgBox("Soll die Aktivitätsbezeichnung '" & Me!lst.Column(1) & "' wirklich gelöscht werden?", _

                vbYesNo + vbExclamation, "Aktivitätsbezeichnung löschen") = vbYes Then

            Set db = CurrentDb

            db.Execute "DELETE FROM tblAktivitaetsbezeichnungen WHERE AktivitaetsbezeichnungID = " & Me!lst

            Me!lst.Requery

            Set db = Nothing

        End If

    End If

End Sub

Falls ja, erscheint ein Meldungsfenster mit der Frage, ob der Benutzer den Datensatz wirklich löschen möchte. Falls ja, verwendet die Prozedur die Execute-Methode des aktuellen Database-Objekts, um eine entsprechende DELETE-Abfrage auszuführen. Anschließend wird das Listenfeld aktualisiert.

Aktivitätsbezeichnungen im Detail

Das Formular frmAktivitaetsbezeichnungenDetail zeigt eine einzelne Aktivitätsbezeichnung an und erlaubt das Einstellen der Bezeichnung sowie der Kategorie, unter der diese Bezeichnung geführt wird (s. Abb. 8).

pic008.png

Abb. 8: Das Formular mit der Detailansicht einer Aktivitätsbezeichnung in der Entwurfsansicht

Ein spezielles Feature dieses Formulars ist die Möglichkeit, neue Kategorien direkt in das Kombinationsfeld einzutragen. Dies wird durch die Prozedur aus Listing 3 realisiert, die durch das Ereignis Bei Nicht in Liste ausgelöst wird.

Listing 3: Anlegen einer neuen Aktivitätsbezeichnung

Private Sub cboAktivitaetkategorieID_NotInList(NewData As String, Response As Integer)

    Response = acDataErrAdded

    Dim db As DAO.Database

    Set db = CurrentDb

    db.Execute "INSERT INTO tblAktivitaetskategorien(Aktivitaetskategorie) VALUES ('" & NewData & "')", _

        dbFailOnError

    Set db = Nothing

End Sub

Die Prozedur speichert den mit dem Parameter NewData übergebenen Wert in der Tabelle tblAktivitaetskategorien und gibt für den Parameter Response den Wert acDataErrAdded zurück, was die sonst erscheinende Meldung vermeidet.

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.