Suppression de données (Access)
Résolu/Fermé
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
-
28 janv. 2010 à 16:43
Utilisateur anonyme - 8 févr. 2010 à 16:28
Utilisateur anonyme - 8 févr. 2010 à 16:28
A voir également:
- Suppression de données (Access)
- Forcer suppression fichier - Guide
- Reinstaller windows sans perte de données - Guide
- Effacer les données de navigation - Guide
- Suppression page word - Guide
- Tnt base de données vide ✓ - Forum TNT / Satellite / Réception
20 réponses
Utilisateur anonyme
8 févr. 2010 à 15:13
8 févr. 2010 à 15:13
Bonjour,
je ne sais pas si le post est toujours d'actualité, mais suite à ton dernier message, voici quelques pistes :
D'abord, je te conseille vivement de ne pas inclure de parenthèses dans tes noms de table, de champs, ou de n'importe quel objet que tu peux créer. Si vraiment tu y tiens, alors chaque fois que tu devras utiliser ce nom, il te faudra lencadrer de crochets.
Dans ton cas, lorsque tu fais référence à ta table T_Contrat(s)_de_vente_annulés, il faut que tu écrives [T_Contrat(s)_de_vente_annulés]. Sans cela, c'est le bazar...
De même pour tes champs appelés No Acheteur et No Lot. L'espace n'est jamais le bienvenu dans le nommage des objets. De même que pour la table avec des parenthèses, cela t'oblige à faire référence à ton objet avec des crochets [No acheteur] et [No Lot].
Attention aussi à ne pas confondre l'espace et _. Il s'agît de deux caractères différents et non interchangeables.
Ensuite, dans l'instruction SQL, l'utilisation de me.No_Acheteur et me.No_Lot indiquent d'aller lire la valeur de ces deux champs dans ton formulaire. Précisons donc que ton formulaire doit effectivement contenir ces champs, nommés No_Lot et No_acheteur. Ces champs doivent afficher respectivement les données [No acheteur] et [No Lot] de ta table.
Si, après avoir vérifié et corrigé tout cela, ça ne fonctionne pas, tu rajoutes, juste avant le DoCmd.RunSQL StrSQL une ligne Debug.Print StrSQL, puis tu fais Ctrl+G pour afficher la fenêtre de débogage. Ainsi, lorsque cette ligne s'exécutera, l'instruction SQL sera écrite dans la fenêtre de débogage, et tu pourra faire un copier/coller afin que je vois ce qui cloche.
Bon courage.
je ne sais pas si le post est toujours d'actualité, mais suite à ton dernier message, voici quelques pistes :
D'abord, je te conseille vivement de ne pas inclure de parenthèses dans tes noms de table, de champs, ou de n'importe quel objet que tu peux créer. Si vraiment tu y tiens, alors chaque fois que tu devras utiliser ce nom, il te faudra lencadrer de crochets.
Dans ton cas, lorsque tu fais référence à ta table T_Contrat(s)_de_vente_annulés, il faut que tu écrives [T_Contrat(s)_de_vente_annulés]. Sans cela, c'est le bazar...
De même pour tes champs appelés No Acheteur et No Lot. L'espace n'est jamais le bienvenu dans le nommage des objets. De même que pour la table avec des parenthèses, cela t'oblige à faire référence à ton objet avec des crochets [No acheteur] et [No Lot].
Attention aussi à ne pas confondre l'espace et _. Il s'agît de deux caractères différents et non interchangeables.
Ensuite, dans l'instruction SQL, l'utilisation de me.No_Acheteur et me.No_Lot indiquent d'aller lire la valeur de ces deux champs dans ton formulaire. Précisons donc que ton formulaire doit effectivement contenir ces champs, nommés No_Lot et No_acheteur. Ces champs doivent afficher respectivement les données [No acheteur] et [No Lot] de ta table.
Si, après avoir vérifié et corrigé tout cela, ça ne fonctionne pas, tu rajoutes, juste avant le DoCmd.RunSQL StrSQL une ligne Debug.Print StrSQL, puis tu fais Ctrl+G pour afficher la fenêtre de débogage. Ainsi, lorsque cette ligne s'exécutera, l'instruction SQL sera écrite dans la fenêtre de débogage, et tu pourra faire un copier/coller afin que je vois ce qui cloche.
Bon courage.
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
28 janv. 2010 à 16:50
28 janv. 2010 à 16:50
Salut,
il faut sans doute que tu actives l'intégrité référentielle au niveau de tes relations et cocher les suppressions en cascade.
il faut sans doute que tu actives l'intégrité référentielle au niveau de tes relations et cocher les suppressions en cascade.
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
28 janv. 2010 à 19:04
28 janv. 2010 à 19:04
Message d'access: "Impossible de créer cette relation et d'assurer l'intégrité reférentielle."
J'avais déjà essayer.
Je ne suis pas un crac en Access, mais j'ai l'impression que ma table T_Produits est "primaire" dans ma DB et que la table T_Contrats_de_vente_annulés est "secondaire" (Que la table T_Contrats_de_vente_annulés est liée à la table T_Produits).
Ce que j'ai de besoin c'est que la table T_Produits soit liée à la table T_Contrats_de_vente_annulés.
Toutes les autres tables de ma DB sont liées à la table T_Produits (elle est centrale si je eut dire)
J'avais déjà essayer.
Je ne suis pas un crac en Access, mais j'ai l'impression que ma table T_Produits est "primaire" dans ma DB et que la table T_Contrats_de_vente_annulés est "secondaire" (Que la table T_Contrats_de_vente_annulés est liée à la table T_Produits).
Ce que j'ai de besoin c'est que la table T_Produits soit liée à la table T_Contrats_de_vente_annulés.
Toutes les autres tables de ma DB sont liées à la table T_Produits (elle est centrale si je eut dire)
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
28 janv. 2010 à 20:12
28 janv. 2010 à 20:12
Il serait intéressant de nous dire le type des relations entre les tables : 1 à plusieurs, 1 à 1 et sur quels champs (pour savoir s'ils sont des clés primaires)...
Tu pourrais faire une impression écran de tes relations et coller le document sur cjoint ?
Tu pourrais faire une impression écran de tes relations et coller le document sur cjoint ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
1 févr. 2010 à 19:45
1 févr. 2010 à 19:45
Désolé du délai, je n'ai pas eu le temps de répondre vendredi dernier et la FDS, je suis à OFF.
Où je joint mon fichier ?
Où je joint mon fichier ?
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
1 févr. 2010 à 20:38
1 févr. 2010 à 20:38
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
1 févr. 2010 à 22:04
1 févr. 2010 à 22:04
Merci
Et voilà
http://cjoint.com/data/cbwbbLpGZA.htm
J'ai créer une requete "info produits" que j'ai liée dans ma requête et ça fait le même problème
J'ai mis la table T_PRODUITS pour que tu puisse voir la clé primaire de cette table.
Il n'y a pas de relation entre ces tables dans la fenêtre "relation"
Et voilà
http://cjoint.com/data/cbwbbLpGZA.htm
J'ai créer une requete "info produits" que j'ai liée dans ma requête et ça fait le même problème
J'ai mis la table T_PRODUITS pour que tu puisse voir la clé primaire de cette table.
Il n'y a pas de relation entre ces tables dans la fenêtre "relation"
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
2 févr. 2010 à 09:58
2 févr. 2010 à 09:58
En principe : relation 1-n entre enchérisseurs et contrats de ventes annulés.
Quelle est la différence entre N°dossier de contrat de ventes annulés et N°dossier de R_info_produits ?
R_info_produits est une table ou une requête ?
Je pense malgré tout que ton modèle de données est erroné, c'est sans doute pour cela que tu ne peux pas faire ce que tu souhaites.
Quelle est la différence entre N°dossier de contrat de ventes annulés et N°dossier de R_info_produits ?
R_info_produits est une table ou une requête ?
Je pense malgré tout que ton modèle de données est erroné, c'est sans doute pour cela que tu ne peux pas faire ce que tu souhaites.
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
4 févr. 2010 à 20:31
4 févr. 2010 à 20:31
NoDossier est égal entre Contrat de vente annulé et R_Info Produits
R_Info Produits est une requête que j'ai fait pour faire afficher les informations sur les produits dans plusieurs formulaire.
Que veux-tu dire par mon modèle de données est erroné. De quel façon je peux corriger ?
Merci pour le temps que tu accorde à mon problème.
R_Info Produits est une requête que j'ai fait pour faire afficher les informations sur les produits dans plusieurs formulaire.
Que veux-tu dire par mon modèle de données est erroné. De quel façon je peux corriger ?
Merci pour le temps que tu accorde à mon problème.
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
4 févr. 2010 à 20:44
4 févr. 2010 à 20:44
Il me faudrait les tables et non des requêtes...
Peux-tu faire un affichage des relations, mais en mettant toutes les tables (et que les tables) ?
Peux-tu faire un affichage des relations, mais en mettant toutes les tables (et que les tables) ?
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
4 févr. 2010 à 21:24
4 févr. 2010 à 21:24
Je n'ai pas de relations "générale" entre les tables en questions.
Les relations n'était que dans ma requête.
https://www.cjoint.com/?cevwMjiNGh
Les relations n'était que dans ma requête.
https://www.cjoint.com/?cevwMjiNGh
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
5 févr. 2010 à 09:52
5 févr. 2010 à 09:52
Tu devrais en principe avoir une relation de 1-n entre T-informations-générales sur l'ecan et T_produits. Idem pour T_type exigence, T_catégories de produits, T_carburants...
C'est le principe : une table avec une clé primaire qui se retrouve comme nom de champ dans une autre table doit avoir une relation 1-n.
Mais aussi intégrer la table T_no_dossier_encan dans la table t_informations générales sur l'ecan, puisqu'elles ont la même clé primaire
C'est le principe : une table avec une clé primaire qui se retrouve comme nom de champ dans une autre table doit avoir une relation 1-n.
Mais aussi intégrer la table T_no_dossier_encan dans la table t_informations générales sur l'ecan, puisqu'elles ont la même clé primaire
Utilisateur anonyme
5 févr. 2010 à 11:39
5 févr. 2010 à 11:39
Bonjour tous,
Sans vouloir faire mon malin, à mon avis on se fourvoie :
Ton formulaire est basé sur une requête mettant en relation tes trois tables. Si tu as créé le bouton de suppression à l'aide de l'assistant de Access, il tente tout bêtement de supprimer la ligne de ta requête, et donc des tables qui la constituent. Or, il semblerait que la relation créée dans ta requête empêche cette suppression.
Si tu ne veux supprimer que la ligne de la table T_contrats_de_vente_annulés, je te conseille de le faire par une commande SQL en VBA qui pourrait ressembler à :
dim StrSQL as String
StrSQL = "DELETE T_Contrats_de_vente_annulés.* FROM T_Contrats_de_vente_annulés WHERE "
StrSQL = StrSQL & "((( T_Contrats_de_vente_annulés.NoEnchérisseur)=" & Me.NoEnchérisseur
StrSQL = StrSQL & ") AND ((T_Contrats_de_vente_annulés.NoLot)=" & Me.NoLot & "));
DoCmd.RunSQL StrSQL
Me.Requery
J'espère que ça répond à ton besoin
Sans vouloir faire mon malin, à mon avis on se fourvoie :
Ton formulaire est basé sur une requête mettant en relation tes trois tables. Si tu as créé le bouton de suppression à l'aide de l'assistant de Access, il tente tout bêtement de supprimer la ligne de ta requête, et donc des tables qui la constituent. Or, il semblerait que la relation créée dans ta requête empêche cette suppression.
Si tu ne veux supprimer que la ligne de la table T_contrats_de_vente_annulés, je te conseille de le faire par une commande SQL en VBA qui pourrait ressembler à :
dim StrSQL as String
StrSQL = "DELETE T_Contrats_de_vente_annulés.* FROM T_Contrats_de_vente_annulés WHERE "
StrSQL = StrSQL & "((( T_Contrats_de_vente_annulés.NoEnchérisseur)=" & Me.NoEnchérisseur
StrSQL = StrSQL & ") AND ((T_Contrats_de_vente_annulés.NoLot)=" & Me.NoLot & "));
DoCmd.RunSQL StrSQL
Me.Requery
J'espère que ça répond à ton besoin
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
5 févr. 2010 à 17:58
5 févr. 2010 à 17:58
Bonjour Manugeo
Message d'erreur de compilation:
Membre de méthode ou de données introuvable
Merci quand même...
Message d'erreur de compilation:
Membre de méthode ou de données introuvable
Merci quand même...
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
5 févr. 2010 à 18:00
5 févr. 2010 à 18:00
Bonjour Blux
J'ai apporté les correctifs que tu m'as suggéré dans mes relations.
https://www.cjoint.com/?cfr5F0sLHq
J'ai ton approbation ?
Cependant, mon problème persiste...
J'ai apporté les correctifs que tu m'as suggéré dans mes relations.
https://www.cjoint.com/?cfr5F0sLHq
J'ai ton approbation ?
Cependant, mon problème persiste...
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
5 févr. 2010 à 18:10
5 févr. 2010 à 18:10
Déjà, ça me semble plus joli :-)
Mais je ne vois pas la table T_contrat de vente annulés...
Dans tous les cas, lorsque tu as une base avec un modèle de données 'académique', il faut savoir que tu ne peux pas supprimer n'importe quoi n'importe quand, c'est ce qu'on appelle l'intégrité référentielle (par exemple on ne peut pas supprimer un client de la table client si des factures sont en relation avec ce client dans la table facture).
Mais je ne vois pas la table T_contrat de vente annulés...
Dans tous les cas, lorsque tu as une base avec un modèle de données 'académique', il faut savoir que tu ne peux pas supprimer n'importe quoi n'importe quand, c'est ce qu'on appelle l'intégrité référentielle (par exemple on ne peut pas supprimer un client de la table client si des factures sont en relation avec ce client dans la table facture).
Utilisateur anonyme
5 févr. 2010 à 18:06
5 févr. 2010 à 18:06
Je pense que c'est la ligne SQL qui a été coupée au moment du Copier Coller.
La clause WHERE doit se trouver en fin de première ligne :
...FROM T_Contrats_de_vente_annulés WHERE "
Essaye comme ça.
La clause WHERE doit se trouver en fin de première ligne :
...FROM T_Contrats_de_vente_annulés WHERE "
Essaye comme ça.
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
5 févr. 2010 à 18:28
5 févr. 2010 à 18:28
Manugeo
Voir ci-joint l'erreur de compilation
https://www.cjoint.com/?cfsAXkT5we
Merci
Voir ci-joint l'erreur de compilation
https://www.cjoint.com/?cfsAXkT5we
Merci
blux
Messages postés
26531
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 décembre 2024
3 317
5 févr. 2010 à 18:33
5 févr. 2010 à 18:33
C'est normal, la zone surlignée doit correspondre à un contrôle à partir duquel on récupère le n° enchérisseur...
Existe-t'il une telle zone ?
Existe-t'il une telle zone ?
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
5 févr. 2010 à 18:37
5 févr. 2010 à 18:37
Blux
Je ne peux pas créer de relation entre la table T_PRODUITS et la table T_Contrat de vente annulés en appliquant l'intégrité référentielle
https://www.cjoint.com/?cfsLflqy67
Je ne peux pas créer de relation entre la table T_PRODUITS et la table T_Contrat de vente annulés en appliquant l'intégrité référentielle
https://www.cjoint.com/?cfsLflqy67
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
5 févr. 2010 à 18:39
5 févr. 2010 à 18:39
Pour les lignes de code vous me perdez complètement.
Je me débrouille dans access de façon autodidacte mais la prog, je suis un gros 0
Je me débrouille dans access de façon autodidacte mais la prog, je suis un gros 0
Utilisateur anonyme
5 févr. 2010 à 18:42
5 févr. 2010 à 18:42
Ben oui, je te donne du code, mais c'est toi qui a créé ton formulaire, tes tables, et qui connaît le nom des tables et des champs de formulaire; je suis pas mme Soleil...
Pour que ça marche, il faut que ton formulaire ait un champ stockant ton n° d'enchérisseur (qui s'appelle NoEnchérisseur) et un autre qui affiche le n° de lot (NoLot)
Les noms sont ceux que tu as donné lorsque tu as expliqué le lien entre tes table.
Sur ce, je termine ma journée.
Pour que ça marche, il faut que ton formulaire ait un champ stockant ton n° d'enchérisseur (qui s'appelle NoEnchérisseur) et un autre qui affiche le n° de lot (NoLot)
Les noms sont ceux que tu as donné lorsque tu as expliqué le lien entre tes table.
Sur ce, je termine ma journée.
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
5 févr. 2010 à 19:28
5 févr. 2010 à 19:28
J'apprécie énormément le temps que vous m'accordez pour résoudre mon problème.
Vous serait-il possible d'expliquer comme si vous vous adressiez à quelqu'un qui a des connaissance limité dans le domaine. Je suis assez brillant pour comprendre, cependant si vous êtes trop technique, je vous perds.
Je ne suis pas programmeur, je me suis créer un outil pour m'aider dans mon travail.
Recevez, Interlocuteurs, mes salutations distinguées.
Vous serait-il possible d'expliquer comme si vous vous adressiez à quelqu'un qui a des connaissance limité dans le domaine. Je suis assez brillant pour comprendre, cependant si vous êtes trop technique, je vous perds.
Je ne suis pas programmeur, je me suis créer un outil pour m'aider dans mon travail.
Recevez, Interlocuteurs, mes salutations distinguées.
gumbi machine
Messages postés
57
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
4 avril 2016
5
6 févr. 2010 à 05:08
6 févr. 2010 à 05:08
Bonjour Manugeo
Au post no6 j'ai joint une image des trois tables avec le nom des champs des tables.
Les lignes de codes ajusté devrait donner ceci:
Dim StrSQL As String
StrSQL = "DELETE T_Contrat(s)_de_vente_annulés.* FROM T_Contrat(s)_de_vente_annulés WHERE "
StrSQL = StrSQL & "((( T_Contrat(s)_de_vente_annulés.No_Acheteur)=" & Me.No_Acheteur
StrSQL = StrSQL & ") AND ((T_Contrat(s)_de_vente_annulés.No_Lot)=" & Me.No_Lot & ")); "
DoCmd.RunSQL StrSQL
Me.Requery
Cependant, à l'execution j'ai un message d'erreur '3131' - Erreur de syntaxe dans la clause FROM
et le débogage surligne DoCmd.RunSQL StrSQL
Le nom des champs de mon formulaire sont "No Lot" et "No Acheteur"
Merci de m'expliquer ce qui ne va pas afin de me permettre de comprendre et d'améliorer mes connaissances.
Au post no6 j'ai joint une image des trois tables avec le nom des champs des tables.
Les lignes de codes ajusté devrait donner ceci:
Dim StrSQL As String
StrSQL = "DELETE T_Contrat(s)_de_vente_annulés.* FROM T_Contrat(s)_de_vente_annulés WHERE "
StrSQL = StrSQL & "((( T_Contrat(s)_de_vente_annulés.No_Acheteur)=" & Me.No_Acheteur
StrSQL = StrSQL & ") AND ((T_Contrat(s)_de_vente_annulés.No_Lot)=" & Me.No_Lot & ")); "
DoCmd.RunSQL StrSQL
Me.Requery
Cependant, à l'execution j'ai un message d'erreur '3131' - Erreur de syntaxe dans la clause FROM
et le débogage surligne DoCmd.RunSQL StrSQL
Le nom des champs de mon formulaire sont "No Lot" et "No Acheteur"
Merci de m'expliquer ce qui ne va pas afin de me permettre de comprendre et d'améliorer mes connaissances.
8 févr. 2010 à 16:25
Dim StrSQL As String
StrSQL = "DELETE [T_Contrat(s) de vente annulés].* FROM [T_Contrat(s) de vente annulés] WHERE "
StrSQL = StrSQL & "((( [T_Contrat(s) de vente annulés].[No Acheteur])=" & Me.[No Acheteur]
StrSQL = StrSQL & ") AND (([T_Contrat(s) de vente annulés].[No Lot])=" & Me.[No Lot] & ")); "
DoCmd.RunSQL StrSQL
Me.Requery
Tout fonctionne à merveille !
Merci énormément pour l'aide et les explications que tu m'as apporté.