zener82
Messages postés15Date d'inscriptionsamedi 25 novembre 2000StatutMembreDernière intervention18 juillet 2021
-
11 déc. 2007 à 15:10
zener82
Messages postés15Date d'inscriptionsamedi 25 novembre 2000StatutMembreDernière intervention18 juillet 2021
-
11 déc. 2007 à 16:13
Bonjour à toutes et tous.
Je programme actuellement quelques fonctions en VBA, et je souhaite supprimer des enregistrements d'une table de ma base de données (access).
Je butte sur un soucis :
-comment supprimer les enregistrements d'un recordset dans la table courante, sans que cette suppression ne se répercute sur les tables liées ? J'ai bien tenté de jouer avec l'option "adAffectGroup" mais rien n'y fait !
Merci d'avance pour votre aide !!
Afin d'illustrer, voici un bout de code :
<hr />' connexion à la BD
Set MaConnexion1 = New Connection
MaConnexion1.Provider = "Microsoft.Jet.oledb.4.0"
MaConnexion1.Open CStr(Application.Worksheets("DataBase").Cells(3, 4).Value)
' creation requete
Set MaRequete1 = New Recordset
With MaRequete1
.ActiveConnection = ConnexionDest queryString "SELECT * FROM SeqAlgo WHERE SeqNom " & Chr(39) & SeqName & Chr(39) & " "
.Open queryString, , adOpenDynamic, adLockPessimistic
End With
'suppression de l'enreg, qui malgré moi, supprime aussi les enregistrements des tables liées
Do While MaRequete1.EOF <> True
MaRequete1.Delete adAffectGroup
MaRequete1.MoveNext
Loop
MaRequete1.Close
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 déc. 2007 à 16:08
Tu n'as que 2 cas possibles si tu as des tables liées.
Soit tu supprime un enregistrement dans une table, et tu supprime en cascade tous les enregistrements liés dans les tables liées,
Soit tu ne peux pas supprimer l'enregistrement tant qu'il existe des enregistrements liés. Autrement dit il faut commencer par supprimer les enregistrements liés avant de suprimer l'enregistrement.
Il ne peut pas (n'est pas conseiller d') en etre autrement sinon tu vas te retrouver avec des enregistrements orphelins te mettant le bordel dans la base et pouvant mener assez rapidement à une base corrompue pouvant entrainer la perte des données.