Bonjour à tous,
Que faut-il que je change dans mon schéma relationnel pour que lorsque je supprime une famille, cela ne me supprime pas les avions associés ?
Je souhaite conserver dans le meilleur des cas l'intégrité référentielle.
En regardant l'image vous verrez ma relation 1 à plusieurs, où les avions sont caractérisés par leur famille. Ils n'ont qu'une famille d'appartenance. C'est pourquoi je n'ai pas fait de table d'association. Cependant lorsque je supprime une famille donc NomFamilleA (clé primaire de Familles Avion et clé étrangère il me semble de Avions), cela me supprime tous les avions associés à cette famille.
En attendant vous verrez avec mon formulaire, lorsque je clique sur supprimer une famille, je MAJ Avions.FamA=null pour tous les avions associés, avant de supprimer la famille
Have a nice day !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Private Sub Supprimer_btn_Click() On Error GoTo Err_Supprimer_btn_Click Dim Reponse As Integer, i As Variant Reponse = Msgbox("Etes-vous sûr de vouloir supprimer la famille " & Me.FamilleA_txt & "? Si des avions apparaissent dans la liste de droite, ils ne seront plus associés à aucune famille.", vbQuestion + vbYesNo, "Confirmation") If Reponse = vbNo Then Exit Sub Else For i = 0 To list_avions.ListCount - 1 DoCmd.RunSQL "UPDATE Avions SET FamA=null Where Avions.Type='" & Me.list_avions.ItemData(i) & "'" 'si on supprime juste la famille dans la table famille avions, cela supprimera également toute les lignes d'avions relatives a cette famille, donc on change d'abord leur nom de famille afin que ces avions ne soient pas supprimés de la base Debug.Print Next i DoCmd.RunSQL "Delete * From [Familles Avion] Where [Familles Avion].NomFamilleA= '" & Me.FamilleA_txt & "'" Debug.Print Annuler_nom_btn_Click DoCmd.Close DoCmd.OpenForm "F_Avions_Famille" Forms.F_Avions_Famille.list_avions.SetFocus Forms.F_Avions_Famille.FamilleA_txt.Requery Forms.F_Avions_Famille.FamilleA_txt.SetFocus End If Exit_Supprimer_btn_Click: Exit Sub Err_Supprimer_btn_Click: Msgbox err.Description Resume Exit_Supprimer_btn_Click End Sub
Partager