Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

4.5.1 Einfache Daten in der Detailansicht

4.5.2 Einfache Daten in der Übersicht mit Endlos formularen

Ein Formular zur Anzeige der Übersicht von Datensätzen enthält die gleiche Datensatzquelle wie das Formular zur Anzeige der Detailansicht, in der Regel jedoch mit weniger Feldern. Für Tabellen, die so wenige Felder enthalten, dass diese leicht nebeneinander angezeigt werden können, braucht prinzipiell gar keine Detailansicht erstellt zu werden. Die Felder sind meist wie in Abbildung 4.25 nebeneinander angeordnet. In der Abbildung finden Sie direkt die Elemente zum Steuern von Aktionen wie Neuanlegen, Löschen und Bearbeiten von Datensätzen.

Die OK-Schaltfläche dient wie die Schaltfläche des zuvor beschriebenen Formulars lediglich dem Schließen des Formulars.

Die Neu-Schaltfläche soll das oben beschriebene Formular zur detaillierten Ansicht eines Datensatzes öffnen und einen leeren Datensatz anzeigen. Dafür ist die folgende Ereigniseigenschaft verantwortlich, die durch das Beim Klicken-Ereignis der Schaltfläche ausgelöst wird.

Abbildung 4.25: Entwurfsansicht eines Übersichtsformulars (»frmKontakteEndlosformular«)

Formular mit leerem Datensatz öffnen

Die Routine verwendet die OpenForm-Methode des DoCmd-Objekts zum Öffnen des Formulars frmKontakteDetailansicht. Der Parameter DataMode erhält dabei den Wert acFormAdd, damit das Formular beim Öffnen direkt einen leeren Datensatz anzeigt.

Formular als modalen Dialog öffnen

Der Wert des Parameters WindowMode liefert die Voraussetzung dafür, dass das aufrufende Formular - die Übersicht - den angezeigten Datenbestand direkt nach dem Eingeben des neuen Datensatzes und Schließen des Detailformulars aktualisieren kann (siehe Abbildung 4.26). Durch den Wert acDialog wird das Formular frmKontakteDetailansicht als modaler Dialog geöffnet, was bedeutet, dass innerhalb der Access-Anwendung nichts mehr geht, solange dieses Formular geöffnet ist - selbst der aufrufende Code wird währenddessen angehalten. Erst wenn das Formular den Fokus verliert, also geschlossen oder unsichtbar gemacht wird, läuft die aufrufende Routine weiter. Dadurch kann die Übersicht direkt nach dem Schließen der Detailansicht aktualisiert werden.

Private Sub cmdNeu_Click()
     DoCmd. OpenForm "frmKontakteDetailansicht", DataMode:=acFormAdd, _
        WindowMode:=acDialog
    Me.Requery
End Sub

Listing 4.5: Aufrufen des Detailformulars zum Anlegen eines neuen Datensatzes

Löschen von Datensätzen

Die nächste Schaltfläche dient dem Löschen des aktuell markierten Datensatzes. Die einfachste Variante des benötigten Codes sieht wie folgt aus:

Private Sub cmdLoeschen_Click()
    On Error Resume Next
     DoCmd.RunCommand acCmdDeleteRecord
End Sub

Listing 4.6: Löschen eines Datensatzes

Abbildung 4.26: Öffnen eines Eingabeformulars vom Übersichtsformular aus (»frmKontakteEndlosformular«, »frmKontakteDetailansicht«)

Die Routine verwendet die RunCommand-Methode des DoCmd-Objekts mit dem Parameter acCmdDeleteRecord, um den aktuell markierten Datensatz zu löschen. Da hier eigentlich nur der Fehler auftreten kann, dass kein Datensatz markiert ist, verhindern Sie diesen mit der On Error Resume Next-Anweisung im Vorhinein. Alternativ können Sie den aktuellen Datensatz im Übrigen auch mit folgender Anweisung löschen:

Me.Recordset. Delete

Etwas weniger rudimentär gestalten Sie das Abfangen dieses Fehlers, wenn Sie die On Error Resume Next-Anweisung durch folgenden Code ersetzen. Dieser prüft, ob aktuell kein Datensatz ausgewählt ist, und bricht in diesem Fall mit einer entsprechenden Meldung ab:

If IsNull(Me!KontaktID) Then
    MsgBox "Bitte wählen Sie zunächst einen Datensatz aus."
    Exit Sub
End If

Sollte die Anzeige von Warnmeldungen bei Datensatzänderungen aktiviert sein (siehe Abbildung 4.19), erscheint hier allerdings eine unschöne Meldung (siehe Abbildung 4.27).

Abbildung 4.27: Access-Meldung beim Löschen eines Datensatzes

Wenn Sie diese Meldung durch eine eigene Meldung ersetzen möchten, verwenden Sie die folgende Prozedur. Die SetWarnings-Methode des DoCmd-Objekts deaktiviert dabei die Anzeige der eingebauten Meldung und aktiviert diese anschließend wieder.

Private Sub cmdLoeschen_Click()

    On Error Resume Next

     DoCmd.SetWarnings False

    If MsgBox("Möchten Sie den Kontakt '" & Me!Vorname & " " _
        & Me!Nachname & "' wirklich löschen?", vbYesNo + vbExclamation, _
        "Löschbestätigung") = vbYes Then
        DoCmd.RunCommand acCmdDeleteRecord
    End If

    DoCmd.SetWarnings True

End Sub

Listing 4.7: Löschen eines Datensatzes mit benutzerdefinierter Warnmeldung

Anzeigen der Details zu einem Datensatz

Die letzte Schaltfläche des Übersichtsformulars dient dem Anzeigen der Detailansicht des ausgewählten Datensatzes. Die dadurch ausgelöste Routine prüft zunächst, ob ein Datensatz markiert ist. Falls ja, öffnet sie das Detailformular wiederum mit der DoCmd.OpenForm-Methode. In diesem Fall kommt für den Parameter DataMode jedoch der Wert acFormEdit zum Zuge und der anzuzeigende Datensatz wird mit dem Parameter WhereCondition festgelegt. Dieser erwartet als Wert - wie der Name schon sagt - eine Bedingung, die den anzuzeigenden Datensatz festlegt. Hier lautet die Bedingung, dass der Wert des Feldes KontaktID dem des ausgewählten Datensatzes im Übersichtsformular entsprechen muss.

Private Sub cmdBearbeiten_Click()
    If IsNull(Me!KontaktID) Then
        MsgBox "Bitte wählen Sie zunächst einen Datensatz aus."

        Exit Sub
    End If
    DoCmd.OpenForm "frmKontakteDetailansicht", DataMode:=acFormEdit, _
        WindowMode:=acDialog, WhereCondition:="KontaktID = " & Me!KontaktID
End Sub

Listing 4.8: Öffnen eines Datensatzes in der Detailansicht

Nächster Abschnitt:

4.5.3 Einfache Daten in der Übersicht als Datenblatt

© 2006-2008 André Minhorst Alle Rechte vorbehalten.