IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Requête de sélection --> Gestion Historique ... [Débutant(e)]


Sujet :

Access

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Requête de sélection --> Gestion Historique ...
    Bonjour à tous ...

    Je suis en train de réaliser un projet et je dois réaliser un historique ...

    Dans un formulaire lorsque je remplis un champ l'enregistrement en cours doit se copier dans une table TB_HISTORIQUE puis se supprimer de la table en cours ...

    Ce que j'ai fait j'ai créer une requête d'ajout dans la table TB_HISTORIQUE avec une condition qui me permet de copier tous les enregistrements de la table si le champ visa est remplus et ensuite j'ai fait une requête de suppression qui me supprimes tous les enregistrements de la table dont le champ visa est rempli ...

    Je n'ai pas de problème là dessus ... mais ce n'est pas totallement ce que je veux faire ... je m'explique :

    J'ai 2 tables :

    TB_DESTINATIONS
    pk_fk_mouvement_destination
    pk_fk_departement_destination
    masse_entree
    etc ..

    TB_MOUVEMENTS
    pk_mouvement
    date_mouvement
    numero_mouvement

    En fait lorsque je copie mon mouvement puis que je le supprime je le fais sur la table TB_DESTINATIONS ( qui est une table associative ) et comme vous pouvez le penser mon enregistrement n'est pas supprimer dans ma table TB_MOUVEMENTS.

    Ce que j'aimerais faire c'est dès que un mouvement est supprimer de ma table TB_DESTINATIONS j'aimerais qu'il le soit aussi dans ma table MOUVEMENTS ...

    Si je résume cela ... cela nous donne :

    Si mouvement 1 est quittancé ( donc envoyé dans la table historique depuis la table TB_DESTINATIONS ) alors on supprime le mouvement n°dans la table TB_MOUVEMENTS.

    Je ne sais pas si je me suis bien exprimée mais si vous ne comprenez pas mon problème, n'hésitez pas à me le communiquer et je vous donnerai plus de précision ...

    Merci ...

    a tout bientôt ...

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Euh là tu prends le problème à l'envers

    Le mouvement est à supprimer depuis la table mouvement et c'est l'intégrité référentielle (Suppression en cascade) qui le supprimera dans la table destination

  3. #3
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    merci de ta réponse alors attends je résume ...

    Voici ma requête d'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO TB_DESTINATION_INVENTAIRE ( fk_mouvement_destination_inventaire, fk_departement_destination_inventaire, masse_entree_destination_inventaire, masse_sortie_destination_inventaire, masse_inventaire_destination_inventaire, nb_piece_entree_destination_inventaire, nb_piece_sortie_destination_inventaire, nb_piece_inventaire_destination_inventaire, visa_entree_destination_inventaire, visa_sortie_destination_inventaire )
    SELECT TB_MOUVEMENTS.numero_mouvement, TB_DEPARTEMENTS.nom_departement, TB_DESTINATIONS.masse_entree_destination, TB_DESTINATIONS.masse_sortie_destination, TB_DESTINATIONS.masse_inventaire_destination, TB_DESTINATIONS.nb_piece_entree_destination, TB_DESTINATIONS.nb_piece_sortie_destination, TB_DESTINATIONS.nb_piece_inventaire_destination, TB_DESTINATIONS.visa_entree_destination, TB_DESTINATIONS.visa_sortie_destination
    FROM TB_MOUVEMENTS RIGHT JOIN (TB_DEPARTEMENTS RIGHT JOIN TB_DESTINATIONS ON TB_DEPARTEMENTS.pk_departement=TB_DESTINATIONS.pk_fk_departement_destination) ON TB_MOUVEMENTS.pk_mouvement=TB_DESTINATIONS.pk_fk_mouvement_destination
    WHERE visa_sortie_destination is not null;
    Voici ma requête de suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE TB_DESTINATIONS.pk_fk_mouvement_destination, TB_DESTINATIONS.pk_fk_departement_destination, TB_DESTINATIONS.masse_entree_destination, TB_DESTINATIONS.masse_sortie_destination, TB_DESTINATIONS.masse_inventaire_destination, TB_DESTINATIONS.nb_piece_entree_destination, TB_DESTINATIONS.nb_piece_sortie_destination, TB_DESTINATIONS.nb_piece_inventaire_destination, TB_DESTINATIONS.visa_entree_destination, TB_DESTINATIONS.visa_sortie_destination
    FROM TB_DESTINATIONS
    WHERE visa_sortie_destination is not null;

    Et d'après ce que tu me dis je dois supprimer en cascade mais comment on fait pour faire cela ... ???

    On doit double cliquer sur la relation et prendre le choix N° 3 dans la conception de la requête ???

    merci de tes réponses ...

    A tout bientôt ...

  4. #4
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Ce que j'ai fait, j'ai été dans mes relations de ma base de données et dans la relation entre TB_MOUVEMENTS et TB_DESTINATIONS ben j'ai cochez l'option suppression en cascade ... ...

    mais cela ne fonctionne pas ... quelqu'un sait pourquoi ???

    merci de vos réponses ...

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Il faut supprimer le mouvement dans la table mouvement et c'est la relation qui supprimera la destination.

    Utilise des requêtes normalisées ! DELETE FROM et non DELETE Champ1, Champ2 FROM

  6. #6
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Tofalu à dit :

    Il faut supprimer le mouvement dans la table mouvement et c'est la relation qui supprimera la destination.
    A ouais je vois le truc ... je vais modifier cela alors ...

    Tofalu à dit :

    Utilise des requêtes normalisées ! DELETE FROM et non DELETE Champ1, Champ2 FROM
    Merci pour tes conseils Tofalu mais comme je l'ai déjà dit dans un autre poste, je ne peux pas utilisé comme tu me dis des requêtes normalisées ... En fait je dois suivre une procédure que l'on m'a soumise pour ce projet et je ne peux pas changer ce qui est dit sur cette procédure même si je suis d'accord avec toi ...

    En attendant merci de ton aide ... Je vais essayer de modifier ma requête ... et dès que cela marchera je vais la poster ... En attendant MERCI POUR TOUT ...

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 374
    Points : 19 784
    Points
    19 784
    Billets dans le blog
    66
    Par défaut
    Salut,

    As-tu essayé
    d'Inverser les tables ou plutot les champs des tables dans ta relation
    (après click droit sur la relation..)

    @+

  8. #8
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    En réponse à User :

    Non je n'ai pas essayé mais je vais en tout premier lieu tester la méthode de Tofalu ...

    En parlant de cette méthode, voici la requêtre de suppression que j'ai faite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE TB_MOUVEMENTS.pk_mouvement, TB_MOUVEMENTS.date_mouvement, TB_MOUVEMENTS.numero_mouvement, TB_MOUVEMENTS.fk_description, TB_MOUVEMENTS.fk_departement_provenance, TB_DESTINATIONS.visa_sortie_destination
    FROM TB_MOUVEMENTS INNER JOIN TB_DESTINATIONS ON TB_MOUVEMENTS.pk_mouvement = TB_DESTINATIONS.pk_fk_mouvement_destination
    WHERE (((TB_DESTINATIONS.visa_sortie_destination) Is Not Null));
    Lorsque je l'exécute, il me vient un message qui me dit : Spécifiez la table contenant les enrefistrements que vous voulez supprimer avec comme bouton : Ok et Aide ...

    Comment remédier à cela ???

    Merci de votre aide ...

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Là j'ai l'impression de parler dans le vide ....

    Il faut baser la suppression sur la table mouvement, je ne vois pas ce que viens faire la jointure et encore moins les champs de la table destination dans le delete ...

    Forcément, à tout dénormaliser, on se perd ... et ce n'est pas la vocation de ce forum que de t'apprendre des trucs incohérents

    Enfin bref, je ne vois pas l'interet d'un tel exercice et encore moins si tu ne suis pas mes conseils

  10. #10
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Excuse moi Tofalu ...

    Alors attends il y a peut être confusion de la chose ...

    Tu me dis :
    Il faut baser la suppression sur la table mouvement,
    Si je reagrde le début de ma requête j'ai bien : tous les champs de ma table TB_MOUVEMENTS ...

    tu me dis encore :
    je ne vois pas ce que viens faire la jointure et encore moins les champs de la table destination dans le delete ...
    La jointure elle vient automatiquement quand on créer la requête ... en fait d'après ma procédure, je dois faire comme suit pour créer ma requête :

    1) Créer une requête en mode Création
    2) Sélection de mes tables
    3) Sélection de mes champs
    4) Changer le type de la requête en requête de suppression ...

    Et lorsque je fais ma requête, je sélectionne tous les enregistrement de ma table TB_MOUVEMENTS ...

    En copiant ma requête sur le forum je me suis apperçue d'une erreur de copier-coller que je n'ai pas eu le temps d'éditer à nouveau et je m'en excuse

    donc voici la requête que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE pk_mouvement, date_mouvement, numero_mouvement, fk_description, fk_departement_provenance
    FROM TB_MOUVEMENTS, TB_DESTINATIONS
    WHERE (((visa_sortie_destination) Is Not Null));
    La requête ci-dessus est créer sans utiliser le générateur de requête automatique --> Normallement je n'ai pas le droit car cela ne suit pas ma procédure mais je justifierai mon choix ...

    Lorsque j'exécute ma requête j'ai toujours le même message qui vient et qui me dit :

    Spécifiez la table contenant les enrefistrements que vous voulez supprimer
    De où vient le problème alors ???

    Je ne comprends pas bien ce que tu veux me dire Tofalu ...

    Voici exactement ce que j'ai fait :

    1) Clique droit sur la relation entre la table TB_MOUVEMENTS et la table TB_DESTINATIONS pour cocher la case qui stipule qu'il y aura une suppression en cascade des enregistrements

    2) Création d'une requête en mode création

    3) Affichage du mode SQL pour tapper ma requête moi-même ( celle-ci dessus )

    4) Exécution de la requête ...

    Et le problème vient LA ... ...

    Merci de ton aide ...

  11. #11
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Bonjour ... J'aimerais relancer le sujet ...

    Car j'ai toujours des problèmes ...

    Alors, d'arpès Tofalu je dois supprimer directement mon enregistrement dans ma table TB_MOUVEMENTS plutôt que dans ma table TB_DESTINATIONS en faisant une suppression en cascade ...

    Jusque là, pas de soucis ... J'ai compris ce que je devais faire soit :

    1) Double cliquer sur la relation entre TB_MOUVEMENTS et TB_DESTINATIONS et cochez la case où il y a marqué : Suppression en cascade ... ... ...

    2) Création de la requête pour supprimer l'enregistrement dans la table TB_MOUVEMENTS ...

    Problème :

    Actuellement d'après la requête que j'ai faite, je supprime mon enregistrement ( celui de la table TB_DESTINATIONS ) avec la condition que mon champ visa ne soit pas null car c'est le but ... je ne dois pas supprimer un enregistrement dont le champs visa est null ...

    Alors ce que je voulais savoir c'est comment faire pour supprimer mon enregistrement directeement dans la table TB_MOUVEMENTS en faisant un test sur la table TB_DESTINATIONS ... .... je ne comprends pas bien le truc en fait ... car ce que j'ai fait ici : ( dsl c'est du SQL Access mais cela sera modifié par la suite )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE pk_mouvement, date_mouvement, numero_mouvement, fk_description, fk_departement_provenance 
    FROM TB_MOUVEMENTS, TB_DESTINATIONS 
    WHERE (((visa_sortie_destination) Is Not Null));
    ne fonctionne pas ...

    Je crois que je ne m'y prends pas vraiment très bien ... est-ce que quelqu'un pourrait m'aider pour me mettre sur la bonne voie ???

    Merci pour votre aide ...

  12. #12
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ah, j'avais pas vu que tu voulais supprimer suivant le champ visa de l'autre table.

    Là où j'ai un doute, c'est sur ton modèle conceptuel. Est ce qu'à un mouvement peut correspondre plusieurs destination ? Car si oui, tu risques de supprimer des mouvements ayant des destinations avec visa et d'autres sans visa.


    Essaye alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE 
    FROM TB_MOUVEMENTS 
    WHERE Pk_Mouvement IN (SELECT Fk_Mouvement_Destination FROM TB_DESTINATIONS WHERE visa_destination is not null);

  13. #13
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Tofalu dit :

    Ah, j'avais pas vu que tu voulais supprimer suivant le champ visa de l'autre table.
    Pas de soucis ... je me disais bien qu'il y avait eu un problème de communication ... mais c'est pas grave ...

    Tofalu dit :

    Est ce qu'à un mouvement peut correspondre plusieurs destination ?
    Oui, cela peut paraître étonnant mais il y a bien plusieurs destinations pour 1 mouvement. Exemple :

    MVT 1 -- 50 grammes de plomb
    Destination 1 : Fonderie --> 25 grammes
    Destination 2 : Fils --> 25 grammes

    Tu vois le truc j'espère ... ... ...

    Je vais essayer ton code tout de suite ... ...

    Merci pour ton aide ...

  14. #14
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    MVT 1 -- 50 grammes de plomb
    Destination 1 : Fonderie --> 25 grammes
    Destination 2 : Fils --> 25 grammes
    Oui mais si tu as un visa non null pour la destination 1 et null pour la 2, tu supprimes le mouvement ou pas ?

  15. #15
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Alors en faite cela se passe comme ça :

    Je dois supprimer le mouvement seulement si :

    Mon champ visa est rempli,
    Mon champ contrôle pièce est rempli,
    Mon champ contrôle masse est rempli.

    ( Pour l'instant je teste seulement avec le visa ... ... je ne veux pas trop m'enbrouiller pour l'instant )

    Explications détaillées :

    J'ai créer un formulaire basé sur la table TB_MOUVEMENTS d'une part et dans mon formulaire j'ai un sous-formulaire qui est basé sur la table TB_DESTINATIONS. ( jusque là, pas de soucis ... )

    Ensuite j'ai fait des test en VBA qui disent :

    1. Si le champ visa n'est pas rempli alors un msgbox s'affiche pour que l'utilisateur rentre son visa.

    2. Si le champ contrôle pièce n'est pas rempli alors un msgbox s'affiche pour que l'utilisateur rentre un nombre dans le contrôle des pièces

    3. Si le champ contrôle masse n'est pas rempli alors un msgbox s'affiche pour que l'utilisateur rentre un nombre dans le contrôle de la masse.

    Donc dans tous les cas, le champ visa sera rempli si on quittance un mouvement pas de soucis là dessus.

    Donc pour en revenir à ce que tu me disais,

    Oui mais si tu as un visa non null pour la destination 1 et null pour la 2, tu supprimes le mouvement ou pas ?
    Cela n'est pas possible il y aura toujours un champ visa.

    Maintenant j'ai modifié un tout petit peu ta requête pour l'adapter à ma base de données ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE *
    FROM TB_MOUVEMENTS
    WHERE Pk_Mouvement IN (SELECT pk_fk_mouvement_destination FROM TB_DESTINATIONS WHERE visa_sortie_destination is not null);
    une fois que je l'exécute j'ai un message d'erreur qui me vient et qui me dit :

    Impossible d'effacer 3 enregistrements de la requête Suppression à la suite de violation de clé et 0 enregistrement à la suite de violation de verrou.
    Si je clique quand même sur Oui pour exécuter ma requête ben cela ne fait rien du tout ...

  16. #16
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Attention avec la relation 1-N mouvement/Destination, pour un mouvement, tu as plusieurs valeur du champ visa_destination !

  17. #17
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Ahhh je crois bien que je vois ce qu tu veux dire :

    Ma table destinations est faite comme ceci :

    TB_DESTINATIONS
    pk_fk_mouvement_destination
    pk_fk_departement_destination
    masse_entree_destination
    masse_sortie_destination
    masse_inventaire_destination
    nb_piece_entree_destination
    nb_piece_sortie_destination
    nb_piece_inventaire_destination
    visa_entree_destination
    visa_sortie_destination

    Donc je peux avoir ce type d'enregistrement :

    1 - 1 - 12 - 12 - 12 - 1 - 1 - 1 - rtu - rtu
    1 - 1 - 12 - 12 - 12 - 1 - 1 - 1 - rtu - lio

    et c'est cela qui pose problème ...

    Donc en gros c'est un problème de modèlisation ... si je comprends bien ...

    Il faut que je revoie ma gestion du visa ... c'est bien cela ??? ...

    En fait cela ne va pas changer grand chose si je vais une table VISA avec une clé étrangère dans ma table TB_DESTINATIONS ...

    Je crois bien qu'il faut que je médite un peu ...

    Sinon j'avais éventuellement pensé à une autre solution ... la solution de rajouter un champ oui/non dans ma table TB_MOUVEMENTS et si les 3 conditions que j'ai précisées dans un poste plus haut sont remplies alors on coche le champ pour que sa valeur soit OUI et si sa valeur est OUI, on supprime l'enregistrement dans la table TB_MOUVEMENTS et on peut faire une recherche dans la table TB_DESTINATIONS pour supprimer toutes les lignes qui ont comme PK_FK_MOUVEMENT_DESTINATION un numéro inconnu dans la table mouvement ...

    Bon cela fera un peu de programmation et ouais cela reste encore a testé pour savoir si c'est une bonne idée ...

    Qu'en penses-tu ???

  18. #18
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    J'en pense que c'est un problème mais peut être pas de modélisation.

    Quand tu dis, je supprime le mouvement où le visa est rempli cela ne signifie rien. Soit tu supprimes le mouvement ayant tous les visas de rempli, soit tu supprimes un mouvement ayant au moins un visa de rempli, soit tu supprime la destination ayant le visa rempli du mouvement.

    A toi de dire quelle hypothèse utiliser

  19. #19
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Donc si je résume les 3 hypothèses sont :

    1) supprimes le mouvement ayant tous les visas de rempli,
    2) supprimes un mouvement ayant au moins un visa de rempli,
    3) supprime la destination ayant le visa rempli du mouvement.

    Alors ... j'ai bien réfléchis à la chose ... Etant donnée comme je l'ai dit que je suis obligé de remplir le visa il faudrais que je choisise l'hypothèse 2 (supprimes un mouvement ayant au moins un visa de rempli) ... cela serait la plus raisonnable et la plus juste par rapport à ce que je veux faire ...

    Je me justifie :

    En choissisant l'hyphthèse 2, je supprime le mouvement qui as au moins 1 visa et c'est le but ... car j'aimerais que dès qu'un mouvement à au moins 1 visa qu'il soit supprimer à la fois de la table TB_MOUVEMENTS et à la fois de la table TB_DESTINATIONS ...

    En fait si je résume avec cette hypothèse, dès qu'un visa apparaît pour un mouvement il doit être supprimé ... c'est exactement ce que je cherche à faire ... mais je peine un peu ...

    Alors pour faire cela ... comment t'y prendrais-tu ??? Tu peux un peu m'aiguiller ... ??? que je prenne la bonne route au moins pas que je m'égare dans je ne sais quel chemin ...

    Merci Tofalu ...

  20. #20
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    J'ai une idée qui peut marcher ...

    Je t'explique :

    Alors dans le projet que je dois faire la base de données doit subir des suppression à chaque fin de journée c'est à dire que chaque jour à 17h00 la table TB_MOUVEMENTS et la table TB_DESTINATION doit être vidées pour que le lendemain lorsque les gens vont travailler sur la base les 2 tables soient vierges ...

    Il se peut que certains soir il y ait des mouvements qui ne sont pas quittancé ... Donc pour gérer cela j'ai pensé faire ceci : ( j'ai déjà fait une brève explication avant mais voici l'explication en détaillé )

    J'ai créer un code VBA qui test mes champs dans mon formulaire qui me sert à quittancer les mouvements :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    'Test pour savoir si le visa est null
    If IsNull(SOUS_FRM_controle_des_poids_entree_matiere_visa!visa_sortie_destination) Then
        MsgBox ("Veuillez remplir le champ Visa")
     
        ' Je place le focus sur le champ VISA du sous-formulaire
        Me.SOUS_FRM_controle_des_poids_entree_matiere_visa.SetFocus
        DoCmd.GoToControl "visa_sortie_destination"
     
    Else
     
        ' Test pour savoir si le champ contrôle pièce est null
        If IsNull(SOUS_FRM_controle_des_poids_entree_matiere!nb_piece_sortie_destination) Then
            MsgBox ("Veuillez remplir le champ Contrôle des pièces")
     
            ' Je place le focus sur le champ nb_piece_sortie_destination du sous-formulaire
            Me.SOUS_FRM_controle_des_poids_entree_matiere.SetFocus
            DoCmd.GoToControl "nb_piece_sortie_destination"
     
     
        Else
     
            'Test pour savoir si le champ contrôle masse est null
            If IsNull(SOUS_FRM_controle_des_poids_entree_matiere!masse_sortie_destination) Then
                MsgBox ("Veuillez remplir le champ Contrôle de la masse")
     
                ' Je place le focus sur le champ nb_piece_sortie_destination du sous-formulaire
                Me.SOUS_FRM_controle_des_poids_entree_matiere.SetFocus
                DoCmd.GoToControl "masse_sortie_destination"
     
            Else
     
                quittancer_mouvement = True
            'Fin du test pour le contrôle de la masse
            End If
     
        'Fin du test pour le contrôle des pièces
        End If
     
    'Fin du test pour savoir si le visa est null
    End If
    On peut voir que dans ce code j'ai mit comme ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quittancer_mouvement = True
    lorsque toues les conditions sont respectées ... on est bien d'accord ...

    Alors mon idée est la suivante ...

    Je fais une requête de suppression qui me supprimer toute ma table tb_destinations et toute ma tables tb_mouvement qu'il faudra exécuter chaque soir ...

    cette requête aura comme condition :

    WHERE quittancer_mouvement = True ....

    Tu vois le trucs ???

    De toute façon actuellement chaque soir des peresonnes doivent exécuter des requêtes pour mettre à jour des tables alors il n'y a pas de soucis si ces personnes doivent cliquer sur un bouton de plus le soir pour effacer les données de la table non ???

    Penses-tu que c'est une bonne idée ???

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] Requêtes AJAX et gestion historique
    Par almoha dans le forum jQuery
    Réponses: 0
    Dernier message: 08/12/2013, 11h10
  2. [conception] Requête de sélection problèmes de relations
    Par snoopy69 dans le forum Modélisation
    Réponses: 26
    Dernier message: 08/11/2005, 14h23
  3. [SQL] requête de sélection récursive ? ou impossible ?
    Par toxine dans le forum Langage SQL
    Réponses: 9
    Dernier message: 04/08/2005, 13h20
  4. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  5. Pb de requête de sélection
    Par Nohant dans le forum Langage SQL
    Réponses: 8
    Dernier message: 16/01/2005, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo