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