Lösch- und Aktualisierungsweitergabe melden ◦ ?

Access aktualisiert oder löscht einen Datensatz, der die referenzielle Integrität verletzt, nur dann, wenn der Entwickler Aktualisierungs- oder Löschweitergabe ausdrücklich erlaubt hat. Wählt er im Datenbankstrukturdiagramm Aktualisierungsweitergabe (siehe unten), so passt Access nach der Änderung eines Primärschlüsselwerts der Haupttabelle den übereinstimmenden Fremdschlüsselwert der Detailtabelle automatisch an. Bei Löschweitergabe werden nach der Löschung einer Hauptzeile automatisch auch alle entsprechenden Detailzeilen gelöscht. Wir zeigen im Folgenden, wie der Entwickler stattdessen in einer Ereignisprozedur das explizite Verständnis des Benutzers einholen kann.

### Weitergabe spezifizieren

Im folgenden Ausschnitt des Datenbankstrukturdiagramms von TESTVERWALTUNG_BACKEND.mdb spezifiziert der Entwickler die Löschweitergabe zwischen der Haupttabelle TESTS und der Detailtabelle SCORESMC. Wenn die Anwenderin zum Beispiel den Test 19 löscht, dann werden automatisch auch alle Mehrfachwahl-Antworten dieses Tests in der Tabelle SCORESMC gelöscht:

###
Weitergabe ankündigen

Wenn die Entwicklerin das Einverständnis des Benutzers zu einer Lösch- oder Aktualisierungsaktion einholen möchte, so muss sie dies explizit mit einer Ereignisprozedur tun. Sobald der Benutzer zum Beispiel einen Test löschen will, warnt ihn die folgende Ereignisprozedur, dass er nicht nur den Test, sondern auch alle Antworten auf Fragen dieses Tests löscht:

>     Private Sub Form_Delete(Cancel As Integer)
>       If MsgBox("Auch Testergebnisse löschen?", vbOKCancel + vbExclamation, _
>                 "Löschweitergabe") = vbCancel Then
>         Cancel = True
>       Else
>         Cancel = False	'löschen!
>       End If
>     End Sub