J'ai crée la requête suppression suivante pour supprimer les parrains
http://www.zimagez.com/zimage/requetsupp.php
J'ai appliquer cocher " appliquer l'intégrité référentielle" + "mettre a jour en cascade les champs correspondants" + "effacer en cascade les enregistrements correpondants" de sorte que lorsque l'on supprime un parrain, on supprime l'enfant qu'il parraine aussi
Jusque la il n'y apas de problème ça fonctionne
Toutefois j'ai voulu créer une requête suppression enfant.
on a donc :
http://www.zimagez.com/zimage/requettesupprr.php
Mais là il y a un problème,
on a deux cas:
cas 1 :Un parrain peut parrainé plusieurs enfants donc j'aimerais que lorsqu'un enfant est supprimé, le parrain qui parraine plusieurs enfants ne le soit pas
Cas 2:andis que si un parrain parraine qu'un seul enfant et que ce dernier est supprimé je voudrais que le parrain le soit aussi
Or avec la requete que jai crée l'enfant est bien supprimé mais dans tous les cas le parrain ne l'est pas (que ce soit le cas 1 ou 2)
Pourriez vous me donner un coup de pouce?
Merci d'avance:)
Ha là là. J'ai mis "Fermé jusqu'en Mars" mais j'ouvre quand même un peu la boutique.
En contrepartie de ces heures supplémentaires je te demande de ne plus mettre texte1 pour un champ de formulaire. Et pour tes formulaires un nom préfixé.
Sinon, en VBA tu va "trinquer" ayant pris de mauvaises habitudes. Donner des noms distincts préfixés permet de savoir de suite à qui on s'adresse et de quel objet il s'agit.
J'ai repris une partie de tes noms... Hum! C'est pas idéal.
*****************************
Un formulaire —> frm_parrain source —> parrain (Qui devrait s'appeler tbl_parrain)
Avec au moins un champ —> code_parrain
Donc il existe dans ta base deux requêtes suppression :
La première :
qrySupParrain :
DELETE parrain.code_parrain
FROM parrain
WHERE ((parrain.code_parrain)=[Formulaires]![frm_parrain]![code_parrain]);
(Tiens, pour jouer on fera différend lors de la deuxième requête... De toute façon ce bouton de commande est donné à titre d'exemple et destiné à être supprimé...... Alors : Pourquoi le créer )
On va exécuter très simplement cette requête depuis un bouton —> cmdSupp situé sur ce formulaire :
Private Sub cmdSupp_Click()
DoCmd.OpenQuery ("qrySupParrain")
Me.Form.Requery
End Sub
Ici nous faisons une mise à jour pour le champ supprimé
Nous avons un autre formulaire —> sfrm_enfant source —> enfant (Qui devrait s'appeler tbl_enfant)
Nous l'insérons en qualité de sous formulaire dans notre formulaire —> frm_parrain
Champs fils/Champs pères —> code_parrain
Sur notre formulaire principal (frm_parrain ) dans l'entête nous insérons une zone de texte —>code_enfant
Source —> =Nz(sfrm_enfant.Formulaire!code_enfant;0)
Dans le pied de notre sous formulaire une zone de texte —> Compteur
Source contrôle —> =Compte(*)
Un bouton de commande sur ce même formulaire —> :cmdSuppression
Private Sub cmdSuppression_Click()
Dim SQL As String
Dim Db As Database
Set Db = CurrentDb()
Dim strCompteur As String
strCompteur = Me.sfrm_enfant.Form!Compteur
If Me.code_enfant = 0 Then
MsgBox "Sélectionnez un enfant!" & vbCrLf & vbCrLf & " FrancisHop", vbCritical, "Soyons attentifs"
Exit Sub
End If
If strCompteur > 1 Then
SQL = "DELETE [code_enfant] FROM enfant "
SQL = SQL & "WHERE [code_enfant]= " & Me.code_enfant & ";"
Db.Execute SQL
Else
If strCompteur = 1 Then
SQL = "DELETE [code_enfant] FROM enfant "
SQL = SQL & "WHERE [code_enfant]= " & Me.code_enfant & ";"
Db.Execute SQL
DoCmd.OpenQuery ("qrySupParrain")
End If
End If
Db.Close
Set Db = Nothing
SQL = ""
Me.Form.Requery
'Me.sfrm_enfant.Requery
End Sub