window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Aufgabenplaner

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Im Artikel Berichtsansicht haben Sie eine neue Ansicht für Berichte kennen gelernt, die ganz neue Möglichkeiten eröffnet. Sie können damit hierarchische Daten anzeigen, ohne das TreeView-Steuerelement nutzen zu müssen und in einer Kombination aus Bericht und Formular arbeiten. Das wollen wir gleich einmal in einer Lösung ausprobieren, mit der Sie Ihre täglichen Aufgaben verwalten können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1801_Aufgabenplaner.accdb.

Vorarbeiten

Die Vorarbeiten zu diesem Artikel haben im Artikel Berichtsansicht stattgefunden. Dort haben wir bereits ein kleines Datenmodell mit den beiden Tabellen tblAufgaben und tblKategorien erstellt und ein Grundgerüst eines Berichts, der im Entwurf wie in Bild 1 aussieht.

Ausgangspunkt dieser Lösung - der Bericht rptAufgabenplaner

Bild 1: Ausgangspunkt dieser Lösung – der Bericht rptAufgabenplaner

Kontrollkästchen nutzen

Wenn Sie nun auf das Kontrollkästchen klicken, erfolgt nicht die erwartete änderung des Zustands des Kontrollkästchens. Im Gegenteil – ein Warnsignal macht deutlich, dass die gewünschte Funktion nicht verfügbar ist. Also schauen wir uns an, ob wir das Kontrollkästchen auf andere Weise für unsere Zwecke einsetzen können.

Dazu hinterlegen wir für die Ereigniseigenschaft Beim Klicken des Kontrollkästchens eine Ereignisprozedur. Vorher stellen wir die Eigenschaft Name dieses Steuerelements jedoch noch von Erledigt auf chkErledigt um. Wählen Sie dann den Wert [Ereignisprozedur] für die Eigenschaft Beim Klicken aus und klicken Sie auf die Schaltfläche mit den drei Punkten.

Wir gehen nun einmal naiv an die Aufgabe heran und hinterlegen die folgende Prozedur für das Ereignis:

Private Sub chkErledigt_Click()
    If Me!Erledigt = False Then
        Me!Erledigt = True
    Else
        Me!Erledigt = False
    End If
End Sub

Hier wollen wir schlicht prüfen, welchen Wert das Feld Erledigt aktuell hat und den Wert in Abhängigkeit davon auf True oder False ändern. Wenn wir nun in die Berichtsansicht wechseln und auf das Kontrollkästchen eines der Einträge klicken, erhalten wir die Fehlermeldung aus Bild 2.

Fehler beim Zuweisen eines Wertes an ein Feld im Bericht

Bild 2: Fehler beim Zuweisen eines Wertes an ein Feld im Bericht

Offensichtlich weisen die gefundenen Felder eines Berichts auch in der Berichtsansicht keine Möglichkeit auf, Werte zuzuweisen. Doch damit geben wir uns noch nicht geschlagen. Es gibt ja noch die Möglichkeit, die Daten in der zugrunde liegenden Tabelle zu ändern – und wer weiß, vielleicht können wir den Bericht ja nach dieser Aktion aktualisieren, sodass er doch noch den geänderten Wert im Kontrollkästchen anzeigt

Tabellenwert ändern und Bericht aktualisieren

Die Prozedur chkErledigt_Click aktualisieren wir nun wie in Listing 1.

Private Sub chkErledigt_Click()
     Dim db As DAO.Database
     Dim lngAufgabeID As Long
     Dim bolErledigt As Boolean
     Dim strSQL As String
     lngAufgabeID = Me!AufgabeID
     If Me!Erledigt = False Then
         bolErledigt = True
     Else
         bolErledigt = False
     End If
     Set db = CurrentDb
     strSQL = "UPDATE tblAufgaben SET Erledigt = " & CInt(bolErledigt) & " WHERE AufgabeID = " & lngAufgabeID
     db.Execute strSQL, dbFailOnError
     Me.Requery
     Me!chkErledigt.SetFocus
End Sub

Listing 1: Prozedur zum Einstellen des Wertes des Feldes Erledigt

Die neue Version der Prozedur ermittelt zunächst den Primärschlüsselwert des aktuellen Datensatzes, also den Wert des Feldes AufgabeID.

Dazu muss dieses Feld zunächst einmal zum Entwurf des Berichts hinzugefügt werden, am Besten in den Detailbereich. Da wir die Anzeige dieses Wertes in einem Textfeld für die Benutzung des Berichts nicht benötigen, stellen wir die Eigenschaft Sichtbar des Textfeldes auf Nein ein (siehe Bild 3).

Hinzufügen des Feldes AufgabeID als unsichtbares Textfeld

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar