Home > Schule > Datenbanken > Aufgaben

Laufende Aufgaben

Inhalt der Seite

22./24.08.2006

Einführung in die Datenbankproblematik ausgehend von der These "Datenbanken - das Elixier der Informationsgesellschaft"

Datenbankaufbau im Allgemeinen

29./31.08.2006

Sammlung: Welche Daten und Funktionen soll die Musikdatenbank haben?

Entwurf der Tabellen: Normalisierung und Relationen / Aufbau und Eigenschaften von Tabellen

05./07.09.2006

Übungen zum Entwurf und Anlegen von Tabellen

Abfragen mit SQL und dem Assistenten (QBE): Abfragen

12./14.09.2006

Kleiner Test (15 min)

Einfache Formulare mit Hilfe des Assistenten erstellen

Automatische Kriterienübergabe von einem Formular an eine Abfrage

Das Doppelklick-Ereignis zum Öffnen eines Formulars verwenden

Gehen Sie dazu wie folgt vor:

  1. Erstellen Sie mit Hilfe des Assistenten eine Abfrage qryInterpreten, die alle Daten aus der Tabelle tblInterpreten liefert.
  2. Erstellen Sie mit Hilfe des Assistenten eine Abfrage qryAlben, die alle Daten aus der Tabelle tblAlben liefert.
  3. Erstellen Sie mit Hilfe des Assistenten ein Formular frmInterpreten, das alle Daten aus der Abfrage qryInterpreten in Tabellenform anzeigt (Formular in Endlosansicht).
  4. Erstellen Sie mit Hilfe des Assistenten ein Formular frmAlben, das alle Daten aus der Abfrage qryAlben in Tabellenform anzeigt (ebenfalls Formular in Endlosansicht).
  5. Das Formular frmAlben soll die Alben zum gerade gewählten Interpreten auf dem Formular frmInterpreten anzeigen. Gehen Sie dazu wie folgt vor:
    1. Öffnen Sie die Abfrage qryAlben in der Entwurfansicht. Achtung! Lassen Sie das Formular frmInterpreten geöffnet!
    2. Klicken Sie mit der rechten Maustaste in das Feld Kriterium der Spalte ID_Interpret und wählen Sie das Kontextmenü Aufbauen ...
    3. Wählen Sie im nun geöffneten Ausdrucks-Generator per einfachem Klick und am Ende per Doppelklick Formulare - Geöffnete Formulare - frmInterpreten - ID_Interpret und schließen Sie den Ausdrucks-Generator mit OK.
    4. Im Feld Kriterium der Spalte ID_Interpret der Abfrage qryAlben steht jetzt der Ausdruck Formulare![frmInterpreten]![ID_Interpret].
    5. Speichern Sie die Änderungen an der Abfrage qryAlben.
    6. Wenn Sie jetzt das Formular frmAlben öffnen, werden die Alben zum gerade gewählten Interpreten auf dem Formular frmInterpreten angezeigt.
  6. Das Formular frmAlben soll sich bei einem Doppelklick auf das Feld Interpret des Formulars frmInterpreten öffnen. Gehen Sie dazu wie folgt vor:
    1. Wählen Sie in der Entwurfsansicht des Formulars frmInterpreten im Eigenschaften-Fenster die Registerkarte Ereignis für das Textfeld Interpret.
    2. Wählen Sie beim Ereignis Beim Doppelklicken die Option Ereignisprozedur und klicken Sie danach daneben auf die kleine Schaltfläche mit den drei Punkten.
    3. Im sich nun öffnenden Fenster des VBA-Editors tippen Sie folgenden Befehl: DoCmd.OpenForm "frmAlben"
    4. Schließen Sie den VBA-Editor. Speichern und schließen Sie auch das Formular frmAlben.
    5. Wenn Sie jetzt auf das Feld Interpret im Formular frmInterpreten doppelklicken, sollte das Formular frmAlben geöffnet und die entsprechenden Alben angezeigt werden.

19./21.09.2006

Beenden Sie die Aufgaben von der vorhergehenden Stunde.

Experimentieren Sie mit verschiedenen Format-Optionen für die Objekte Ihrer Formulare: Größe, Ausrichtung, Rahmen, Schrift, Hintergrundbilder usw., wobei Sie schon an ein eigenes Design denken sollten.

Erstellen Sie eine Abfrage qryTitel mit dem Kriterium ID_Album des Formulars frmAlben und dazu ein Formular frmTitel, das die Daten aus der Abfrage bezieht und das beim Doppelklick auf das Feld Album im Formular frmAlben geöffnet wird. Das Vorgehen ist analog zur Aufgabe mit frmInterpreten vorige Woche.

Passen Sie das Design dieses Formulars an das Design der Formulare frmInterpreten und frmAlben an.

Das Ereignis Beim Anzeigen (engl. = Current) zur Anzeige von Informationen in der Titelleiste von Formularen (=Me.Caption) nutzen. Standardmäßig wird in der Titelleiste der vergebene Formularname angezeigt, was selten sinnvoll ist.

  1. Im Formular frmInterpreten soll in der Titelleiste der gerade gewählte Interpret angezeigt werden. Gehen Sie dazu wie folgt vor:
    1. Öffnen Sie das Formular frmInterpreten in der Entwurfsansicht.
    2. Rufen Sie das Eigenschaften-Fenster des Formulars auf (via Menü, Kontextmenü oder Symbolleiste).
    3. Wählen Sie im Register Ereignis des Formulars für das Ereignis Beim Anzeigen die Option Ereignisprozedur und klicken Sie danach daneben auf die kleine Schaltfläche mit den drei Punkten.
    4. Im sich nun öffnenden Fenster des VBA-Editors tippen Sie folgenden Befehl:
      Me.Caption = Me.Interpret
    5. Speichern Sie und sehen Sie sich die Auswirkungen im der Normalansicht des Formulars an.
  2. Im Formular frmAlben soll in der Titelleiste der gerade gewählte Interpret des Formulars frmInterpreten und das gerade gewählte Album angezeigt werden. Gehen Sie dazu wie folgt vor:
    1. Öffnen Sie das Formular frmAlben in der Entwurfsansicht.
    2. Rufen Sie das Eigenschaften-Fenster des Formulars auf (via Menü, Kontextmenü oder Symbolleiste).
    3. Wählen Sie im Register Ereignis des Formulars für das Ereignis Beim Anzeigen die Option Ereignisprozedur und klicken Sie danach daneben auf die kleine Schaltfläche mit den drei Punkten.
    4. Im sich nun öffnenden Fenster des VBA-Editors tippen Sie folgenden Befehl:
      Me.Caption = Forms("frmInterpreten").Controls("Interpret") & " - " & Me.Album
      Das Einfügen von & " - " & bewirkt das Einfügen von Leerzeichen und Bindestrich zwischen die Werte aus den Feldern des Formulars.
    5. Speichern Sie und sehen Sie sich die Auswirkungen im der Normalansicht des Formulars an.
  3. Im Formular frmTitel soll in der Titelleiste ebenfalls der gerade gewählte Interpret des Formulars frmInterpreten und das gerade auf dem Formular frmAlben gewählte Album angezeigt werden. Gehen Sie dazu wie folgt vor:
    1. Öffnen Sie das Formular frmTitel in der Entwurfsansicht.
    2. Rufen Sie das Eigenschaften-Fenster des Formulars auf (via Menü, Kontextmenü oder Symbolleiste).
    3. Wählen Sie im Register Ereignis des Formulars für das Ereignis Beim Anzeigen die Option Ereignisprozedur und klicken Sie danach daneben auf die kleine Schaltfläche mit den drei Punkten.
    4. Im sich nun öffnenden Fenster des VBA-Editors tippen Sie folgenden Befehl:
      Me.Caption = Forms("frmInterpreten").Controls("Interpret") & " - " & Forms("frmAlben").Controls("Album")
    5. Speichern Sie und sehen Sie sich die Auswirkungen im der Normalansicht des Formulars an.

Wie Sie am Beispielcode sehen, werden für das gleiche Ereignis (Beim Anzeigen) unterschiedliche Daten in die Titelleiste (Me.Caption) des jeweiligen Formulars gesendet. Befinden sich die Daten auf demselben Formular, kann man sie mit mit dem Schlüsselwort Me, einem Punkt und dem Feldnamen referenzieren. Befinden sich die Daten auf einem anderen Formular, muss man sagen, dass es sich um ein Formular (Forms) handelt, und der Name des Formulars und der Feldname müssen genannt werden.

26./28.09.2006

Legen Sie sich heute auf ein Designkonzept fest und passen Sie das Aussehen aller Formulare an das Konzept an.

Ergänzen Sie eventuell noch fehlenden Code aus den Vorstunden: Formulare werden per Doppelklick geöffnet und in der Titelleiste werden dynamische Informationen eingeblendet.

03./05.10.2006

Heute beginnen wir mir einer ausführlicheren Beschäftigung mit dem Programmieren mit VBA.

Ein bisschen haben wir das schon getan, indem wir bei dem Ereignis Beim Anzeigen Informationen in die Titelleisten der Formulare geschickt haben und Formulare per Doppelklick öffneten.

Heute werden wir lernen, Bedingungsprüfungen zu verwenden, um auf unterschiedliche Bedingungen auch unterschiedlich reagieren zu können.

  1. Beim Neueintrag eines Interpreten soll in der Titelleiste des Formulars frmInterpreten der Text "Neuen Interpreten eingeben ..." angezeigt werden. Dadurch wird übrigens auch ein Fehler vermieden, der im jetzigen Zustand auftritt: Sobald man in das Feld Interpret klickt, versucht ja das Programm, den Namen des Interpreten in der Titelleiste anzuzeigen. Bei der Eingabe eines neuen Interpreten ist das Feld jedoch leer, was einen so genannten Laufzeitfehler auslöst. Gehen Sie dazu wie folgt vor:
    1. Öffnen Sie das Formular frmInterpreten in der Entwurfsansicht.
    2. Schalten Sie in die Code-Ansicht (via Menü Ansicht - Code oder per Symbolleiste).
    3. Ändern Sie den bisher vorhandenen Code wie folgt ab:

      If IsNull(Me.Interpret) Then

      Me.Caption = "Neuen Interpreten eingeben ...

      Else

      Me.Caption = Me.Interpret

      End If

    4. Testen Sie die Auswirkungen des Codes und geben Sie ein paar neue Interpreten ein.
  2. Beim Neueintrag eines Albums für einen Interpreten soll in der Titelleiste des Formulars frmAlben der Interpret und der Text "Neues Album eingeben ..." angezeigt und automatisch die entsprechende ID_Interpret vom Formular frmInterpreten übernommen werden. Gehen Sie dazu wie folgt vor:
    1. Öffnen Sie das Formular frmAlben in der Entwurfsansicht.
    2. Schalten Sie in die Code-Ansicht (via Menü Ansicht - Code oder per Symbolleiste).
    3. Ändern Sie den bisher vorhandenen Code für Private Sub Form_Current (Me.Caption = Forms("frmInterpreten").Controls("Interpret") & " - " & Me.Album ) wie folgt ab:

      If Me.NewRecord = True Then

      Me.Caption = Forms("frmInterpreten").Controls("Interpret") & " - Neues Album eingeben ..."

      Else

      Me.Caption = Forms("frmInterpreten").Controls("Interpret") & " - " & Me.Album

      End If

    4. Um die ID_Interpret zu übernehmen, nutzen wir das Ereignis Vor Aktualisierung (engl. = Before update) des Feldes Album. Dieses Ereignis tritt ein, wenn man den Inhalt des Feldes geändert hat (= den Namen des Albums geschrieben hat) und das Feld verlassen will (per Maus oder Tabulatortaste). Wählen Sie dazu im Eigenschaftenfesnster für das Feld Album in der Registerkarte Ereignis das Ereignis Vor Aktualisierung und tragen Sie für die Ereignisprozedur folgenden Code ein:

      Private Sub Album_BeforeUpdate(Cancel As Integer)

      If Me.ID_Interpret = 0 Then

      Me.ID_Interpret = Forms("frmInterpreten").Controls("ID_Interpret")

      End If

      End Sub

    5. Geben Sie ein paar Alben ein, um zu sehen, wie der Code funktioniert.
  3. Beim Neueintrag eines Titels für ein Album soll in der Titelleiste des Formulars frmTitel der Interpret, das Album und der Text "Neuen Titel eingeben ..." angezeigt und automatisch die entsprechende ID_Album vom Formular frmAlben übernommen werden. Das Vorgehen dazu ist analog zur vorhergehenden Aufgabe. Erledigen Sie das bitte selbständig.
  4. Zusätzlich sollen die Titel automatisch nummeriert werden, da man die Titel normalerweise in ihrer korrekten Reihenfolge eingibt. Dazu prüfen wir, ob die Titelnummer = 0 ist (Defaultwert bei neuem Datensatz), zählen danach, wie viele Titel es schon mit derselben ID_Album gibt, addieren zu dem Ergebnis 1 und schreiben das Ergebnis in das Feld Titelnummer. Wir nutzen dazu wieder das Ereignis Vor Aktualisierung (engl. = Before update) des Feldes Titel. Tragen Sie zu diesem Ereignis folgenden Code ein:

    Private Sub Titel_BeforeUpdate(Cancel As Integer)

    If Me.TitelNr = 0 Then

    Me.TitelNr = DCount("*", "qryTitel") + 1

    End If

    End Sub

    Geben Sie ein paar Titel ein, um zu sehen, wie der Code funktioniert.

10./12.10.2006

Bereiten Sie Ihre Datenbank entsprechend den Anforderungen für die Bewertung des Zwischenstandes vor!

Zusatzaufgabe für ganz Schnelle

In der Titelleiste des Formulars frmInterpreten wird bisher der aktuell gewählte Interpret angezeigt. Finden Sie eine Lösung, wie auch die Anzahl der vorhandenen Alben zum Interpreten in der Titelleiste angezeigt werden kann.

Finden Sie auch eine Lösung zur Anzeige der Anzahl der Titel zu den aktuell gewählten Alben in der Titelleiste des Formulars frmAlben!

17./19.10.2006

Der Zwischenstand Ihrer Datenbanken wurde bewertet. Beachten Sie, dass beim nächsten Bewerten vom jetzigen Stand der Anforderungen ausgegangen wird: Sie müssen also noch Fehlendes selbständig ergänzen!

Heute beschäftigen wir uns vertiefend mit Funktionen am Beispiel der Stringaddition. Dabei nutzen wir auch verschachtelte Bedingungsprüfungen.

Auf dem Formular frmAlben soll neben dem Interpreten und dem Album auch die Anzahl der Titel auf dem gerade gewählten Album angezeigt werden.

Auf dem Formular frmInterpreten soll neben dem Interpreten auch die Anzahl der Alben des gerade gewählten Interpreten angezeigt werden. Dabei soll zwischen dem Singular Album und dem Plural Alben anhand der ermittelten Anzahl der Alben unterschieden werden.

Das Vorgehen und der Code werden zu Beginn der Stunde anhand der Beispieldatenbank erläutert.

24./26.10.2006

Nachtrag zur letzten Stunde

Hier noch einmal die Codeschnipsel zur Anzeige der Anzahl der Titel zu einem Album bzw. der Anzahl der Alben zu einem Interpreten:

Anzahl der Alben zu einem Interpreten in der Titelleiste des Formulars frmInterpreten

Private Sub Form_Current()

Dim iAlben As Integer, strAlbum As String

If IsNull(Me.Interpret) Then

  Me.Caption = "Neuen Interpreten eingeben ..."

Else

  iAlben = DCount("*", "qryAlben")

  If iAlben = 1 Then

    strAlbum = iAlben & " Album"

  ElseIf iAlben > 1 Then

    strAlbum = iAlben & " Alben"

  Else

    strAlbum = "noch keine Alben vorhanden ..."

  End If

  Me.Caption = Me.Interpret & " (" & strAlbum & ")"

  End If

End Sub

Das Vorgehen zur Anzeige der Anzahl der Titel eines Albums ist analog, wobei nicht nach dem Singular und Plural des Wortes Titel unterschieden werden muss.

Für heute

Zur Verbesserung der Benutzerführung legen wir Starteigenschaften der Datenbank fest und steuern den Benutzer, indem wir nach Bedarf Formulare sichtbar bzw. unsichtbar machen.

Im Menü Extras\Start ... finden Sie die Möglichkeit, ein Startformular festzulegen, das beim Öffnen der Datenbank automatisch angezeigt wird. Unterdrückt man gleichzeitig die Anzeige des Datenbankfensters, sieht der Benutzer nur noch das Formular, mit dem er etwas anstellen kann.

Probieren Sie es aus!

Bisher sind alle Formulare in der Datenbank sichtbar, solange sie geöffnet sind, was zu Verwirrung und auch zu falschen Klicks führen kann.

Um immer nur das benötigte Formular anzuzeigen, kann man das in diesem Moment nicht mehr benötigten Formular unsichtbar machen, also ausblenden.

Hier der Beispielcode

Private Sub Interpret_DblClick(Cancel As Integer)

DoCmd.OpenForm "frmAlben"

Me.Visible = False

End Sub

Beim Öffnen des Formulars frmAlben wird das Formular frmInterpreten unsichtbar gemacht, indem die Eigenschaft Visible den Wert False zugewiesen bekommt.

Beim Schließen des Formulars frmAlben macht man das Formular frmInterpreten wieder sichtbar:

Private Sub Form_Close()

If IsLoaded("frmInterpreten") Then

  Forms!frmInterpreten.Visible = True

End If

End Sub

Die Funktion IsLoaded prüft dabei, ob das sichtbar zu machende Formular geladen ist. Diese Funktion finden Sie im Modul modUtilities in der Beispieldatenbank im Verzeichnis Ihrer Klasse. Importieren Sie das Modul in Ihre Datenbank via Datei\Externe Daten\Importieren ...

Blenden Sie auch das Formular frmAlben beim Übergang zum Formular frmTitel analog aus und ein.

Hinweise

  1. Ein unsichtbar gemachtes Formular ist immer noch geladen - die Daten auf dem Formular stehen also für andere Formulare zur Verfügung.
  2. Wenn Sie jetzt zum Beispiel beim geöffneten Formular frmAlben in die Entwurfsansicht umschalten, wird das Formular frmInterpreten sichtbar gemacht, denn vor dem Anzeigen eines Formulars in der Entwurfsansicht wird die Normalansicht geschlossen, das Ereignis Form_Close tritt also ein, bei dem das Formular frmInterpreten sichtbar gemacht wird.

07./09.11.2006

Klausur

14./16.11.2006

Diese Woche beginnen wir mit der Beschäftigung mit Berichten.

Geplante Berichte

  1. Übersicht der Interpreten mit Alben (rptIA)
  2. Übersicht der Interpreten mit Alben, Titellisten und Texten (optional) rptIATT
  3. Übersicht zum aktuell gewählten Album mit Titelliste und Texten (optional)
  4. Übersicht zu verschiedenen gewählten Alben mit Titellisten und Texten (optional)
  5. Texte einzeln
  6. Coverdruck (optional)

Dabei sollen die einzelnen Übersichten flexibel sein, d.h. sie sollen sich nach bestimmten Kriterien beeinflussen lassen.

Das Vorgehen

1. Anpassen der Tabellen für erweiterte Druckoptionen

Um Texte und personalisierte Listen von Alben flexibel ausdrucken zu können, müssen wir die Tabelle tblAlben um zwei Felder erweitern. Wir benötigen ein Feld Texte und ein Feld Drucken. Beide bekommen den Datentyp Ja/Nein.

Das Feld Texte soll das Auffinden von Alben mit Texten erleichtern.

Das Feld Drucken soll das Ausdrucken von Listen mit beliebigen Alben ermöglichen und das Setzen zu komplizierter Filter vermeiden.

Sie können Ihre Tabellen entsprechend ändern oder löschen und danach noch einmal die Tabellen aus der Beispieldatenbank im Verzeichnis Ihrer Klasse importieren.

2. Erstellen des Berichts rptIA zur Übersicht der Interpreten mit Alben

Erstellen Sie dazu zuerst die Abfrage qryDrucken_rptIA, die die Felder ID_Interpret und Interpret aus der Tabelle tblInterpreten und die Felder ID_Album, Album, Jahr, Genre, Texte und Drucken aus der Tabelle tblAlben enthält.

Erstellen Sie danach mit Hilfe des Berichtsassistenten den Bericht rptIA, der die Daten der Abfrage qryDrucken_rptIA anzeigt. Experimentieren Sie ein bisschen mit den Designangeboten des Assistenten.

Der Bericht zeigt im Moment alle Interpreten und Alben an. Um die Anzeige bei Bedarf zu verändern, benötigen wir ein Formular, mit dessen Hilfe wir auch die weiteren Formulare steuern werden.

3. Erstellen des Formulars frmDrucken

Um bequem und von einem Formular aus alle Druckoptionen steuern zu können, legen wir ein Formular frmDrucken an. Es soll eine Übersicht aller Interpreten mit allen Alben liefern.

Erstellen Sie dazu zuerst die Abfrage qryDrucken, die die Felder ID_Interpret und Interpret aus der Tabelle tblInterpreten und die Felder ID_Album, Album, Jahr, Genre, Texte und Drucken aus der Tabelle tblAlben enthält. Da diese Abfrage dieselben Daten liefert wie die Abfrage qryDrucken_rptIA, können Sie eine Kopie der Abfrage qryDrucken_rptIA unter dem neuen Namen speichern. Das Vorgehen hat einen systematischen Grund, um Abfragen, die Daten für ein Formular liefern, von Abfragen für Berichte zu unterscheiden.

Erstellen Sie danach mit Hilfe des Assistenten das Formular frmDrucken, das die Daten der Abfrage qryDrucken in tabellarischer Form darstellt. Passen Sie das Design des Formulars an Ihr persönliches Design an.

Als Nächstes benötigen wir eine Befehlsschaltfläche, die per Klick den Bericht in der Vorschau anzeigt. Positionieren Sie dazu eine Befehlsschaltfläche im Formularfuß und folgen Sie dem Befehlsschaltflächen-Assistenten: Berichtsoperationen > Berichtsvorschau > Weiter > "rptIA" > Text: "Übersicht drucken" > "cmdDrucken" > Fertig stellen. Den Text in Anführungszeichen müssen Sie schreiben, das andere sind Auswahloptionen.

Der Assistent erstellt mit diesen Angaben folgenden Code (die grünen Kommentare sind von mir):

Private Sub cmdDrucken_Click()

On Error GoTo Err_cmdDrucken_Click 'Fehlerbehandlungsroutine festlegen

Dim stDocName As String 'Variable deklarieren, die den Namen des Berichts enthält.

stDocName = "rptIA" 'Der Variablen den Namen des Berichts zuweisen.

DoCmd.OpenReport stDocName, acPreview 'Bericht in der Vorschau öffnen.

Exit_cmdDrucken_Click:

Exit Sub

Err_cmdDrucken_Click: 'Bei Fehler die Fehlerbeschreibung ausgeben.

MsgBox Err.Description

Resume Exit_cmdDrucken_Click

End Sub

Sie sehen, dass der Assistent eine Fehlerbehandlungsroutine einbaut. Wir lassen Sie stehen.

4. Daten auf dem Formular frmDrucken filtern und an den Bericht rptIA übergeben

Eigentlich benötigt man nur selten die Liste aller Interpreten mit allen Alben (z. B. für die Versicherung, wenn alles gestohlen wurde). Häufiger möchte man eine bestimmte Auswahl nach Interpret, Genre, Jahr haben.

Auf dem Formular lässt sich das einfach durch das Setzen eines oder mehrerer kombinierter Filter erreichen: Rechte Maustaste in das entsprechende Feld setzen und den Filter (auswahlbasierend oder auswahlausschließend) wählen. Fertig. Es werden nur die entsprechenden Daten angezeigt. Ein Filter, der zum Beispiel alle Alben von AC/DC anzeigt, sieht so aus:

((qryDrucken.Interpret="AC/DC"))

Wie Sie sehen, enthält der Filter die Datenquelle, den Namen des Feldes und den Wert, nach dem gefiltert werden soll.

Um im Bericht dieselben Daten anzuzeigen wie im Formular, kann man den Filter des Formulars an den Bericht übergeben. Dazu liest man beim Öffnen des Berichts den Filterwert des Formulars aus und setzt denselben Filter für den Bericht, vorausgesetzt er enthält dieselben Felder zum Filtern.

Es ergibt sich aber noch ein weiteres Problem: Wir werden verschiedene Berichte filtern wollen, die Daten aus unterschiedlichen Abfragen beziehen. Das heißt, dass wir den Namen der Datenquelle des Filters vor dem Öffnen des Berichts entsprechend ändern müssen.

Folgendes Vorgehen ist notwendig:

  1. Erstellen Sie auf dem Formularfuß von frmDrucken ein Textfeld mit dem Namen txtFilter.
  2. Fügen Sie in den Code der Schaltfläche cmdDrucken vor dem Öffnen des Berichts folgenden Code ein:
    If Me.FilterOn = True Then 'Falls Filter vorhanden, übernehmen und an Datenquelle des Berichts anpassen.

    Me.txtFilter = Me.Filter 'Dem Textfeld den Filterwert zuweisen.

    Me.txtFilter = Replace(Me.txtFilter, "qryDrucken", "qryDrucken_rptIA") 'Den Namen der Datenquelle anpassen.

    Else
    Me.txtFilter = "" 'Alten Filter löschen.
    End If
    Dieser Code liest den Formularfilter aus und ändert per Replace den Namen der Datenquelle (aus qryDrucken für das Formular frmDrucken wird qryDrucken_rptIA für den Bericht rptIA.
  3. Fügen Sie in den Bericht rptIA für das Ereignis Beim Öffnen folgenden Code ein:
    Private Sub Report_Open(Cancel As Integer)
    If Forms!frmDrucken.FilterOn = True Then 'Falls auf dem Formular ein Filter aktiv ist,

    Dim strFilter As String 'Variable für Filter deklarieren,

    strFilter = Forms!frmDrucken.txtFilter 'ihr den Wert des Filters zuweisen,

    Me.FilterOn = True'den Berichtsfilter einschalten

    Me.Filter = strFilter und ihm den Wert der Variablen übergeben.

    End If

    End Sub

    Dieser Code prüft, ob auf dem Formular frmDrucken ein Filter aktiv ist. Falls ja, wird der Wert aus dem Feld txtFilter für den Bericht übernommen.

Prüfen Sie, ob der Filter funktioniert!

Wenn alles funktioniert wie gewünscht, können Sie das Feld txtFilter auf dem Formular frmDrucken unsichtbar machen.

21./23.11.2006

Da letzte Woche jeweils eine Stunde ausgefallen ist,haben Sie heute im Grunde dieselben Aufgaben wie letzte Woche.

Bitte: Löschen Sie Ihre Tabellen in der Datenbank und importieren Sie sie neu. Die Tabellen finden Sie in Tabellen_neu.mdb im Verzeichnis Ihrer Klasse. In den neuen Tabellen ist die Tabelle tblAlben an die Bedürfnisse des Drucks angepasst und das Genre wird nicht über eine ID angegeben.

Falls jemand schnell sein sollte, beginnt er mit dem Bericht rptIATT, also dem Bericht mit Interpreten, Alben, Titeln und Texten

Dazu benötigt man folgende zwei Abfragen:

Um auch Daten anzuzeigen, die es nicht gibt, müssen Sie bei den Abfragen die Verknüpfungseigenschaften zwischen den Tabellen ändern. Markieren Sie in der Entwurfsansicht der Abfrage die Linie zwischen den Tabellen. Per rechtem Mausklick öffnet sich das Menü zum Ändern. Es ist selbsterklärend.

Übrigens: Wir benötigen zwei Abfragen, da man die Verknüpfungseigenschaften in einer Abfrage nicht verschachteln kann.

Sobald Sie die Abfragen, haben, können Sie mit dem Berichtsassistenten den Bericht erstellen. Achten Sie darauf, dass der Titeltext die unterste Gruppierungsebene ist. Experimentieren Sie ein bisschen!

28./30.11.2006

Diese Woche steht nur die Aufgabe, die Datenbank zur Bewertung vorzubereiten. Beachten Sie die Aufgaben aus den vorhergehenden Stunden.

Viel Erfolg!

09./11.01.2007

Erst einmal alles Gute im neuen Jahr und viel Erfolg für das Abitur!

Wie geht es bei uns weiter? Sie wissen ja, dass nächste Woche die Notenkonferenzen stattfinden und das Semester zu Ende geht. Danach bleibt nur noch ein kurzes letztes Semester. Es gehört einem selbst bestimmten Projekt, in das so ziemlich alles aus Ihrem bisherigen Informatikunterricht einfließen kann: eine selbst programmierte Anwendung, eine Webseite, Bildbearbeitung, eine Datenbank usw., wobei alles auch miteinander kombiniert werden kann. So könnte man eine Bildgalerie erstellen und diese auf einer Webseite präsentieren. Wichtig sind vor allem die entsprechenden Ideen.

Eine Aufgabe für heute ist es also, Ideen für Projekte zu sammeln. Die Projektarbeit soll in Partnerarbeit geschehen: Suchen Sie sich also einen Partner!

Nächste Woche reichen Sie dann einen Projektentwurf ein (ca. eine Seite als strukturiertes Textdokument mit einem zeitlichen Planungsrahmen, aus dem ersichtlich wird, wann und wie lange Sie woran arbeiten wollen).

Als Angebot meinerseits steht die Weiterentwicklung der Musikdatenbank mit dem Ziel einer vergleichbaren Funktionalität von iTunes, allerdings ohne die iTunes-eigenen Beschränkungen. Interessierte sind zur Mitarbeit eingeladen. Sie sollten aber wissen, dass es sich dabei schon um fortgeschrittene Datenbankprogrammierung handelt.

Und: Vergessen Sie bitte nicht die Vorträge! Nächste Woche einigen wir uns auf Termine, damit Sie sie langfristig vorbereiten können.

Der heutige Tag ist also ein Planungs- und Recherchetag. Viel Erfolg!

Anforderungen an die Datenbank

Am 30.11.2006 wird der Zwischenstand Ihrer Datenbank bewertet. Kontrollieren Sie selbst anhand der Anforderungen!

Tabellen

  1. Die DB enthält die drei Tabellen: tblInterpreten, tblAlben, tblTitel, tblTexte. Importieren Sie die Tabelle tblTexte aus der Datenbank Tabellen_neu.mdb im Verzeichnis Ihrer Klasse. Sie benötigen die Texte für den Bericht rptIATT.

Abfragen

Die DB enthält die Abfragen

  1. qryInterpreten, die alle Interpreten aus der Tabelle tblInterpreten anzeigt.
  2. qryAlben, die alle Alben eines auf dem Formular frmInterpreten gewählten Interpreten anzeigt.
  3. qryTitel, die alle Titel eines auf dem Formular frmAlben gewählten Albums anzeigt.
  4. qryDrucken, die die Felder ID_Interpret und Interpret aus der Tabelle tblInterpreten und die Felder ID_Album, Album, Jahr, Genre, Texte und Drucken aus der Tabelle tblAlben enthält.
  5. qryDrucken_rptIA, die dieselben Felder wie qryDrucken enthält.
  6. qryDrucken_rptIAT, die dieselben Felder wie qryDrucken_rptIA und die Felder ID_Titel, TitelNr und Titel aus der Tabelle tblTitel enthält. Diese Abfrage soll auch Alben Anzeigen, für die noch keine Titel eingeben worden sind.
  7. qryDrucken_rptIATT, die die Abftage qryDrucken_rptIAT und das Feld Titeltext aus der Tabelle tblTexte enthält. Diese Abfrage soll auch Titel anzeigen, für die keine Texte vorhanden sind.

Formulare und Code

  1. Die DB enthält die Formulare frmInterpreten, frmAlben, frmTitel.
  2. Alle Formulare folgen einem erkennbaren Designkonzept.
  3. Das Formular frmInterpreten

    1. Das Formular zeigt alle Interpreten in tabellarischer Form an.
    2. In der Titelleiste wird der aktuell gewählte Interpret angezeigt.
    3. Bei Neueingabe eines Interpreten wird der Text Neuen Interpreten eingeben angezeigt.
    4. Ein Doppelklick auf das Feld Interpret öffnet das Formular frmAlben mit den Alben des gewählten Interpreten.
  4. Das Formular frmAlben

    1. Das Formular zeigt alle Alben eines Interpreten in tabellarischer Form an.
    2. In der Titelleiste werden der aktuelle Interpret und das aktuelle Album angezeigt.
    3. Bei Neueingabe eines Albums wird statt des Titels des Albums der Text Neues Album eingeben angezeigt.
    4. Bei der Neueingabe eines Albums wird die ID_Interpret automatisch in den neuen Datensatz übernommen.
    5. Ein Doppelklick auf das Feld Album öffnet das Formular frmTitel mit den Titeln des gewählten Albums.
  5. Das Formular frmTitel

    1. Das Formular zeigt alle Titel eines Albums in tabellarischer Form an.
    2. In der Titelleiste werden der aktuelle Interpret und das aktuelle Album angezeigt.
    3. Bei der Neueingabe eines Titels wird die Titelnummer automatisch vergeben.
    4. Bei der Neueingabe eines Titels wird die ID_Album automatisch in den neuen Datensatz übernommen.
  6. Das Formular frmDrucken

    1. Das Formular zeigt alle Interpreten mit Alben und den Feldern Jahr, Genre, Compilation, Texte, Drucken in tabellarischer Form an.
    2. In der Titelleiste werden der aktuelle Interpret und das aktuelle Album angezeigt.
    3. Mit der Befehlsschaltfläche cmdDrucken wird die Vorschau des Berichts rptIA aufgerufen.
    4. Falls Daten auf dem Formular gefiltert werden, wird der Filter vor dem Drucken für den Bericht zur Verfügung gestellt.

Berichte

  1. Die DB enthält die Berichte rptIA und rptIATT.
  2. Alle Berichte folgen einem erkennbaren Designkonzept.
  3. Der Bericht rptIA

    1. Der Bericht zeigt alle Interpreten mit Alben, Genre und Jahr in tabellarischer Form an.
    2. Der Bericht übernimmt beim Öffnen vorhandene Filter vom Formular frmDrucken.
  4. Der Bericht rptIATT

    1. Der Bericht zeigt alle Interpreten mit Alben, Genre und Jahr mit Titelliste und Texten an.
    2. Der Bericht übernimmt beim Öffnen vorhandene Filter vom Formular frmDrucken.

Zusatzaufgaben, eigene Features

Für Zusatzaufgaben oder eigenständige Umsetzung von Funktionen können Sie Zusatzpunkte erhalten.

Anregungen für Zusatzaufgaben sind bisher die Anzeige der Anzahl der Alben eines Interpreten bzw. der Anzahl der Titel eines Album in der Titelleiste der entsprechenden Formulare.