Suppression manuelle impossible des enregistrements d'une requête [Résolu]

Signaler
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020
-
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020
-
Bonjour à vous!! :)

J'ai encore un souci.. J'ai une requête A qui contient certaines informations en lien avec la requête B. Elles sont conçues spécifiquement pour un formulaire construit à partir de la requête A et où un sous-formulaire construit avec la requête B est inclus.

J'ai constaté mon problème lorsque j'ai construit un bouton commande "Supprimer" avec la méthode SetRecord.Delete. En effet, je souhaite que l'enregistrement de mon formulaire principal s'efface, ainsi que tous les éléments contenus dans le sous-formulaire. Par contre, lorsque j'appuie sur mon bouton, rien ne se passe, rien ne s'efface..

J'ai bel et bien coché "Effacer en cascade les enregistrements correspondants" dans mes relations, mais ça ne marche pas.

En investiguant un peu plus, je suis allée voir mes requêtes A et B. Lorsque je supprime manuelle un enregistrement directement dans la requête A, tout semble avoir été supprimé pour cette requête, mais quand je rafraîchie, surprise il revient. D'un autre côté, quand je tente de faire la même chose dans ma requête B, l'option "supprimer" n'est même pas disponible.. Je crois que tout ce joue dans ma requête B qui n'accepte pas la suppression de mes données.

Qu'est-ce qui peut empêcher la suppression d'un enregistrement dans une requête?
Est-ce la façon que je l'ai construite qui nuit à cette action?

Merci beaucoup de prendre quelques minutes pour m'aider, je suis si près du but final!

Code de ma requête A:
SELECT [08-DÉPENSES_SAL_RÉGUL].No_DSR, [08-DÉPENSES_SAL_RÉGUL].NoCE_DSR, 
[12-CORPS_EMPLOI].Titre_CE, [08-DÉPENSES_SAL_RÉGUL].MatYe_DSR, 
[08-DÉPENSES_SAL_RÉGUL].NomYe_DSR, [08-DÉPENSES_SAL_RÉGUL].DtDeb_DSR, 
[08-DÉPENSES_SAL_RÉGUL].DtFin_DSR, [08-DÉPENSES_SAL_RÉGUL].NbJrs_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Type_DSR, [08-DÉPENSES_SAL_RÉGUL].Ind_DSR, 
[08-DÉPENSES_SAL_RÉGUL].UnCal_DSR, [08-DÉPENSES_SAL_RÉGUL].Cout_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Rem_DSR, [08-DÉPENSES_SAL_RÉGUL].DRE_DSR, 
[15-DONNÉES_REL_EMPLOI].Date_DRE, [15-DONNÉES_REL_EMPLOI].NDest_DRE, 
[15-DONNÉES_REL_EMPLOI].CDest_DRE, [15-DONNÉES_REL_EMPLOI].No_DRE, 
[15-DONNÉES_REL_EMPLOI].BCal_DRE, [15-DONNÉES_REL_EMPLOI].DCal_DRE, 
[12-CORPS_EMPLOI].NoFAM_CE, [08-DÉPENSES_SAL_RÉGUL].UnCal_DSR, 
[08-DÉPENSES_SAL_RÉGUL].EchSal_DSR, [08-DÉPENSES_SAL_RÉGUL].PourC_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Tx1_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Echo1_DSR, [08-DÉPENSES_SAL_RÉGUL].DEff1_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Tx2_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Echo2_DSR, [08-DÉPENSES_SAL_RÉGUL].DEff2_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Tx3_DSR, [08-DÉPENSES_SAL_RÉGUL].Echo3_DSR, 
[08-DÉPENSES_SAL_RÉGUL].DEff3_DSR, [08-DÉPENSES_SAL_RÉGUL].CBrut_DSR, 
[08-DÉPENSES_SAL_RÉGUL].CVac_DSR, [08-DÉPENSES_SAL_RÉGUL].CAvSoc_DSR, 
[08-DÉPENSES_SAL_RÉGUL].CPyeur_DSR, [08-DÉPENSES_SAL_RÉGUL].Jrs1_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Jrs2_DSR, [08-DÉPENSES_SAL_RÉGUL].Jrs3_DSR, 
[08-DÉPENSES_SAL_RÉGUL].TxVac_DSR, [08-DÉPENSES_SAL_RÉGUL].TxAvSco_DSR, 
[08-DÉPENSES_SAL_RÉGUL].TxPyeur_DSR
FROM [12-CORPS_EMPLOI] INNER JOIN ([08-DÉPENSES_SAL_RÉGUL] 
LEFT JOIN [15-DONNÉES_REL_EMPLOI] 
ON [08-DÉPENSES_SAL_RÉGUL].No_DSR = [15-DONNÉES_REL_EMPLOI].NoDSR_DRE) 
ON [12-CORPS_EMPLOI].No_CE = [08-DÉPENSES_SAL_RÉGUL].NoCE_DSR;




Code de ma requête B:
SELECT [08-DÉPENSES_SAL_RÉGUL].No_DSR, [08-DÉPENSES_SAL_RÉGUL].NoCE_DSR, 
[08-DÉPENSES_SAL_RÉGUL].MatYe_DSR, [08-DÉPENSES_SAL_RÉGUL].NomYe_DSR, 
[08-DÉPENSES_SAL_RÉGUL].DtDeb_DSR, [08-DÉPENSES_SAL_RÉGUL].DtFin_DSR, 
[08-DÉPENSES_SAL_RÉGUL].NbJrs_DSR, [08-DÉPENSES_SAL_RÉGUL].Type_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Ind_DSR, [08-DÉPENSES_SAL_RÉGUL].UnCal_DSR, 
[08-DÉPENSES_SAL_RÉGUL].Cout_DSR, [14-PONDÉRATION_DSR].No_PO, 
[14-PONDÉRATION_DSR].NoAL_PO, [14-PONDÉRATION_DSR].Pond_PO, 
[Cout_DSR]*[Pond_PO]/100 AS NET_DSR, [Ind_DSR]*[Pond_PO]/100 
AS INDNET_DSR, [12-CORPS_EMPLOI].Abr_CE, [08-DÉPENSES_SAL_RÉGUL].DRE_DSR, 
[15-DONNÉES_REL_EMPLOI].BCal_DRE, [15-DONNÉES_REL_EMPLOI].DCal_DRE
FROM [12-CORPS_EMPLOI] 
INNER JOIN (([08-DÉPENSES_SAL_RÉGUL] INNER JOIN [14-PONDÉRATION_DSR] 
ON [08-DÉPENSES_SAL_RÉGUL].No_DSR = [14-PONDÉRATION_DSR].NoDSR_PO) 
LEFT JOIN [15-DONNÉES_REL_EMPLOI] 
ON [08-DÉPENSES_SAL_RÉGUL].No_DSR = [15-DONNÉES_REL_EMPLOI].NoDSR_DRE) 
ON [12-CORPS_EMPLOI].No_CE = [08-DÉPENSES_SAL_RÉGUL].NoCE_DSR;


Vraiment désolée pour la lourdeur de l'information..

7 réponses

Messages postés
13390
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 novembre 2020
750
bonjour,

le formulaire affiche-t-il les enregistrements en continu, avec chacun un bouton "Supprimer"?

si tu as coché "Effacer en cascade les enregistrements correspondants" dans tes relations, il devrait être suffisant, sans passer par une requête, de supprimer un enregistrement dans une table, et les enregistrements liés des autres tables devraient être automatiquement effacés. cela fonctionne-t-il?
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

Bonjour,

Bien que je ne sois pas totalement débutante en la matière, mais presque, je manque un peu de vocabulaire à ce niveau.. Je ne comprend pas bien ta question, que veux-tu dire par "affichage des enregistrements en continu"?

Je ne sais pas si ça peut aider à répondre à la question, mais voici une image de ce que mon formulaire a l'air : https://accounts.google.com/ServiceLogin?service=wise&passive=1209600&continue=https://drive.google.com/file/d/1sOTS3pLvYgBhluGMZpCdvuHeAgC5u_aG/view?usp%3Dsharing&followup=https://drive.google.com/file/d/1sOTS3pLvYgBhluGMZpCdvuHeAgC5u_aG/view?usp%3Dsharing

La section "Attribution de mesures" constitue mon sous-formulaire.

Merci beaucoup!
Messages postés
13390
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 novembre 2020
750
l'image n'est pas publique.

le formulaire affiche-t-il plusieurs enregistrements, avec chacun un bouton "Supprimer"?
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

Oupss.. voilà j'ai mis le lien public maintenant.. tu devrais avoir accès à la photo si tu le veux.

Pour répondre à ta dernière question, non.
En fait, il y a un seul bouton dans le formulaire principal et j'avais espoir que tous les enregistrements contenus dans le sous-formulaire (affiché sous forme de feuille de données) s'effaceraient également.. Mais ça ne fonctionne pas..
Messages postés
13390
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 novembre 2020
750
si tu as coché "Effacer en cascade les enregistrements correspondants" dans tes relations, il devrait être suffisant, sans passer par une requête, de supprimer un enregistrement dans une table, et les enregistrements liés des autres tables devraient être automatiquement effacés. cela fonctionne-t-il?
Messages postés
13390
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 novembre 2020
750
il sera alors sans doute possible de modifier l'action associée au bouton de façon à faire la suppression sans utiliser les deux requêtes, qui ne me semble pas faites pour permettre une suppression.
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

En fait , pour ta première question, non ça ne fonctionne pas. La case est bel et bien cochée, mais rien ne se passe.

Alors si je comprends bien ton dernier commentaire, je pourrais modifier mon bouton pour qu'il supprime directement dans la table plutôt que dans la requête?! Ça aurait beaucoup de sens étant donné que la suppression à même la table de base fonctionne. Saurais-tu me dire quel code vba utiliser pour faire ceci?
Messages postés
13390
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 novembre 2020
750
peux-tu partager ton fichier?

bonne nouvelle que la suppression à même la table fonctionne.

je ne comprends pas ce qui ne fonctionne pas: "La case est bel et bien cochée, mais rien ne se passe".
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

Je trouve étrange aussi que ça ne fonctionne pas, mais si on peut contourner la chose, ça me va très bien!!

Malheureusement, je ne peux pas partager mon fichier car il contient maintenant des données réelles et confidentielles..

Est-ce qu'il y a une façon de programmer la suppression d'un enregistrement précise (à partir de sa clé primaire) directement dans sa table de base par le biais du bouton du formulaire en vba?
Messages postés
13390
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 novembre 2020
750 >
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

je n'ai pas compris dans quel cas cela fonctionne et dans quel cas cela ne fonctionne pas.

tu peux, si tu le souhaites, créer une base de données avec des données de test.

bien sûr, il est possible de programmer la suppression d'un enregistrement précise (à partir de sa clé primaire) directement dans sa table de base par le biais du bouton du formulaire en vba.
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

En fait, la suppression à partir du formulaire ne fonctionne pas ni celle à partir de la requête. Par contre, la suppression à partir de la table de base fonctionne parfaitement. C'est pour ça que je souhaite savoir par quel code je pourrais supprimer l'enregistrement directement dans la table de base.

Je vais regarder pour vous transmettre un fichier avec des données test cette semaine. Merci beaucoup!
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

Voici donc ma base de données avec les renseignements fictifs à l'intérieur.

https://drive.google.com/file/d/1kEsAleQxuZSvAXArJzlhIeQv80NvZCTN/view?usp=sharing

Le formulaire principal que je parle est celui qui porte le nom "08_01M-SAISIR_SAL_RÉGUL_ETE", c'est le bouton "SUPPRIMER" en bas du formulaire qui ne fonctionne pas.

En ce qui concerne les requêtes qui compose le formulaire, il s'agit de la requête "08_01-SAISIR_SAL_RÉGUL" pour la requête A et "08-14_02-SAISIR_SAL_RÉGUL" pour la requête B que je vous ai parlé. Je crois que je ne vous avais pas donné la bonne requête B au départ, mais le problème est le même..

Donc, le bouton "SUPPRIMER" n'a aucun effet. Après avoir testé le bouton, lorsque vous ouvrez une seconde fois le formulaire, vous constaterez que les données sont toujours présentes.

Par contre, si je tente d'effacer les données à partir de la table de base 08-DÉPENSES_SAL_RÉGUL, tout fonctionne. C'est donc pour cela que je souhaite avoir le code qui me permet d'effacer les données à même la table de base.

J'attends de vos nouvelles.

Merci beaucoup!
Messages postés
13390
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
30 novembre 2020
750
bonjour,
je n'ai pas pu tester, car ta base n'est pas compatible avec le Windows (64 bits) que j'utilise.
je suggère de remplacer
Me.Recordset.Delete

par
Dim sql As String
sql = "delete from 08-DÉPENSES_SAL_RÉGUL where No_DSR = " + CStr(Me.Texte109)
DoCmd.RunSQL sql
Messages postés
46
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
18 novembre 2020

Ça a très bien fonctionné!

Merci beaucoup!!