Aktivitäten zählen

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

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar