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

Requêtes et SQL. Discussion :

requete ajout avec condition


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut requete ajout avec condition
    bonjour,

    je planche sur un pb depuis quelques jours mais je ne trouve pas de solutions.

    Je souhaite créer dans access un formulaire me permettant de faire l'appel (present absent) des adhérents d'une assos lors des reunions.

    j'ai donc une table adhérent avec les renseignements classique et une refadherent

    une table réunion refreunion, date

    une table présence refpresence, refreunionref adhérent, case à cocher presence

    Le pb se situe au niveau de la requete

    Je souhaite avoir la liste de toutes les reunions avec tous les adhérents possibles et la case à cocher qui correspond afin que dans mon formulaire je puisse cocher si l'adhérent est présent ou laisser vide s'il est absent.
    un peu comme dans un tableur (je sais access c pas fait pour mais bon...)

    j'ai bien reussi avec 2 requetes a avoir cette liste mais les infos ne sont pas modifiables

    Je ne sais pas si je m'y prends comme il faut ou s'il faut que je change de stratégie....

    j'ai pensé a une autre solution mais moins pretique pour l'utilisateur:

    un formulaire avec une liste déroulante pour choisir la date de la reunion (dates préétablies) une autre liste pour choisir l'adhérent et en dans le formulaire la case à cocher correspondante.
    Mais ca oblige l'utilisateur à changer de nom à chaque fois, pas tres pratique.

    enfin voila si quelqu'un peut m'éclairer je lui en serait éternellement reconnaissant, sisi......

    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    En général on ne peut pas faire une modification dans une requête à cause des liaisons entre les tables qui sont mal faites (il arrive dés fois que le sens ne le permette pas), ou que l'on fasse un regroupement dans celle-ci.

    Si tu nous mets le code SQL de la requête cela nous aiderait.

    Starec

  3. #3
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    à vrai dire à force de chercher et modifié je ne l'ai plus vraiment ma requete

    je vais essayé de la refaire mais c sur que c'est à cause des relations que la modification ne se fait pas

    MAis est ce que je suis sur la bonne piste?

    je vais essayé de la refaire et de poster le code
    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Refais là étape par étape, et à chaque fois que tu rajoutes un champ ou une liaison, testes si tu peux faire une modification.

    Starec

  5. #5
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    alors voila ou j'en suis

    je suis apparemment obligé de faire 2 requetes

    sur la premiere j'affiche toutes les dates et je joints les présences (puisque j'ai reftenue (c les reunions) dans les 2 tables)

    j'ai bien toutes mes dates avec la possibilité de modifier les enregistrements

    voci le code:
    SELECT Tenue.reftenue, Tenue.date, Tpresences.reftenue, Tpresences.reffreres, Tpresences.presence, Tpresences.intervention
    FROM Tenue LEFT JOIN Tpresences ON Tenue.reftenue = Tpresences.reftenue;


    dans la deuxieme requete j'ai donc mis les ref du frere et les colonnes de ma premiere requete. Si je ne fais pas de lien j'ai bien toutes les infos voulu mais je ne peux pas les modifier

    Et si j'essaie de mettre une des 3 jointures je n'ai plus les données que je veux

    merci de ton aide

  6. #6
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Points
    25 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Par défaut
    J'ajouterai également, que tu tienne compte des propriétés des relations entre les tables: surtout la migration des clés.

  7. #7
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    la relation entre clé primaire je connais mais la migration des clé je connais pas tu peux m'en dire un peu plus stp

  8. #8
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    ne trouvant pas de solution j'ai cherché une autre voie

    je pense que je n'y arrive pas parce que les données n'existe pas encore.

    petit résumé

    j'ai 3 tables:
    freres (liste des adhérents) reffreres et les renseignements classiques

    tenues (listes des dates de réunions) reftenue, date

    Tpresences ( qui me permet de cocher si l'adhérent était la ou pas à la reunion) c'est la celle qui a des ref sur les 2 premiere tables
    refpresences, reftenues, reffreres, presences (case à cocher)

    Je voudrais faire une requete me permetant d'avoir pour toutes les dates, tous les nom des adhérents avec la case à cocher pour faire l'appel.

    Le probleme c'est que la table présence ne contient pas de données

    Je pensai remplir cette table en vba. PAr exemple chaque fois que j'ajoute une date de réunion, en vba je crée un enregistrement pour tous les adhérents en lien avec cette date.

    Apres j'aurai plus qu'à trier mes données et ça je sais faire.

    Que pensez vous de cette solution?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pour pouvoir faire des test de requêtes il faut que tu es absolument des données, même bidon, il faut juste que tu es une cohérence sur tes champs qui te servent de clés.

    Starec

  10. #10
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Points
    25 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Par défaut
    Citation Envoyé par mnssylvain Voir le message
    la relation entre clé primaire je connais mais la migration des clé je connais pas tu peux m'en dire un peu plus stp
    La migratiion des clés est un concept général. Je ferai dans quelques lignes l'effort de te l'expliquer très simplement. Tu peux toujours revenir sur un point que tu ne comprends pas:
    la migration intervient au niveau des relations selon les differents types. c'est en fait une règle de passage entre les differents modèles:
    -relation 1 à plusieurs: la clé primaire du père (table) migre chez le fils(table)
    -relation plusieurs à plusieurs: la relation devient une table ayant pour clés, la concténation des clés primaires des deux tables.

    Mais il me semble que dans la réalisation de tes tables, tu a tenu compte de cette règle. Alors t'en fais, ce que je dis n'est que pour la théorie sur la conception des BD

  11. #11
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    merci Danjos pour ton explication effectivement j'en tiens compte c'est la liaison théorie pratique que je n'avais pas faite....

    merci Starec tu confirmes ce que je pensais.

    J'ai donc créer une requete en mode ajout qui me permet de créer un enregistrement dans ma table Tpresence pour chaque adhérent et chaque réunion.

    Du coup je trie mes données dans un formulaire pour faire l'appel et la miracle ça fonctionne..

    Maintenant il faut que j'automatise ça en VBA.

    Le probleme il faut que ma requete ajout tienne compte des enregistrement déja présent. Parce que si j'exécute à nouveau la requete ajout elle me crée
    des doublons dans ma table Tpresence Il faudrait que j'exclue les données qui sont déja présente

    Ensuite si je comprend bien il faut que j'automatise l'exécution de cette requete à chaque fois que j'ajoute une date de réunion mais aussi lorsque j'ajoute un adhérent non?

    Pour le premier pb je seche un peu pour le moment pour le second ca ne me semble pas compliqué.

    Merci pour les infos j'y retourne et vous tiens informé.

  12. #12
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Points
    25 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Par défaut
    Citation Envoyé par mnssylvain Voir le message
    Maintenant il faut que j'automatise ça en VBA.

    Le probleme il faut que ma requete ajout tienne compte des enregistrement déja présent. Parce que si j'exécute à nouveau la requete ajout elle me crée
    des doublons dans ma table Tpresence Il faudrait que j'exclue les données qui sont déja présente
    Effectivement, en automatisant en VBA, tu pourras gérer les enregistrements avec doublons, donc...

    Citation Envoyé par mnssylvain Voir le message
    Ensuite si je comprend bien il faut que j'automatise l'exécution de cette requete à chaque fois que j'ajoute une date de réunion mais aussi lorsque j'ajoute un adhérent non?
    L'utilité d'exécuter la requête quand il y a un nouvel adhérent serait-il de le pointer absent aux réunions précédant son adhésion?
    Si oui, je crois que tu peux le faire.

  13. #13
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    Mon probleme c'est effectivement de gérer les doublons pour le moment je n'y suis pas encore arrivé.

    Le fait d'executer la requete apres l'ajout d'un adhérent ou d'une date de réunion peut effectivement servir à le pointer absent aux réunion s précédentes à son arrivée mais en fait ça sert surtout à me créer les enregistrements lui correspondant dans la table Tprésence.

    Car si je ne les créer pas il n'apparait pas dans ma requete de trie puisque l'enregistrement n'exite pas....

  14. #14
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    Pour ma requete il faudrait qu'il n'ajoute pas les enregistrements déjà existant.
    Il faut donc les enlever de la requete ajout en la comparant à la table où j'insère les données je supose..... enfin j'y travaille si vous avez une piste ça m'intéresse.
    merci

  15. #15
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Points
    25 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Par défaut
    J'ai déja fait quelque chose de ce genre, mais en VBA, avec un parcours sur la table et les if. Mais c'est plus lent, surtout quand il ya beaucoup d'enregistrement.
    Avec une requête, essaie avec la clause NOT IN (juste une piste)

    Autre chose: tu peux éviter de faire plusieurs posts concaténer en éditant tes messages
    Tout le monde y gagnerait...
    ça optimise la gestion des messages, et d'espace disque...

  16. #16
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    Merci Danjos pour ta piste j'imaginai un truc comme cela mais je ne connaissais pas la commande

    j'ai un petit pb encore.

    voici ma requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW freres.reffreres, Tenue.reftenue
    FROM freres, Tenue, Tpresences
    WHERE (((Tpresences.reffreres) Not In ([Tpresences].[reffreres])) AND ((Tpresences.reftenue) Not In ([Tpresences].[reftenue])))
    GROUP BY freres.reffreres, Tenue.reftenue;
    Avec ce code il m'enleve tous les enregistrements.

    Moi je voudrais supprimer seulement les enregistrement ou les deux références sont identiques simultanément

    Je pensais qu'il m'enlevait tous les enregistrements ou la reftenue était la meme puis tous les enregistrement ou la reffreres était la meme et que donc c'était normal de ne plus rien avoir.

    J'ai alors ajouter un adhérent (frere) mais la toujours rien.

    Enfin j'ai du oublier quelquechose....

  17. #17
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Points
    25 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Par défaut
    c'est normal!
    Citation Envoyé par mnssylvain Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW freres.reffreres, Tenue.reftenue
    FROM freres, Tenue, Tpresences
    WHERE (((Tpresences.reffreres) Not In ([Tpresences].[reffreres])) AND ((Tpresences.reftenue) Not In ([Tpresences].[reftenue])))
    GROUP BY freres.reffreres, Tenue.reftenue;
    Avec ce code il m'enleve tous les enregistrements.
    Moi je voudrais supprimer seulement les enregistrement ou les deux références sont identiques simultanément
    Je pensais qu'il m'enlevait tous les enregistrements ou la reftenue était la meme puis tous les enregistrement ou la reffreres était la meme et que donc c'était normal de ne plus rien avoir.
    regarde ta requête: tu fais référence à la même table de part et d'autre de la clause NOT IN.
    Essaie simplement avec DISTINCTROW sans le NOT IN.

  18. #18
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    ah bon?

    j'ai pris reffreres de la table freres puis reftenues de table tenues
    et j'essaie d'enlever les reffrere et reftenue exixtant déjà dans la table Tpresence

    C'est pas ça qu'il faut faire?
    oups je crois que j'ai compris pardon..... je vérifie.....

    voila ma nouvelle requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCTROW freres.reffreres, Tenue.reftenue
    FROM freres, Tenue, Tpresences
    WHERE (((freres.reffreres) Not In ([Tpresences].[reffreres])) AND ((Tenue.reftenue) Not In ([Tpresences].[reftenue])))
    GROUP BY freres.reffreres, Tenue.reftenue;
    mais maintenant il me prends tous les enregistrements possibles, il ne m'enlève pas ceux qui sont déjà dans la table Tprésence....

  19. #19
    Expert éminent sénior

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Points
    25 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Points : 25 358
    Par défaut
    Ok! Pour ne pas qu'on s'éloigne de ton problème, et qu'on se mélange les pédales, rédéfinit à nouveau ton problème(seulement celui là) plus clairement.

  20. #20
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    585
    Points
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 585
    Points : 265
    Par défaut
    j'ai 3 tables
    une tenus (réunions)
    une freres (adhérent)
    une Tprésence (pour faire l'appel) refpresence, reftenue, reffreres


    je veux faire une requete ajout pour creer des enregistrements dans la table Tprésence afin de pouvoir faire l'appel lors d'une réunion.

    J'ai reussi à faire une premiere requete ajout qui m'a créer un enregistrement pour tous les adhérents et toutes les réunions.

    Bon le probleme c'est que si j'ajoute un adhérent ou une réunion il n'y a pas d'enregistrement correspondant dans la table Tprésence. Il faut alors réexecuter la requete ajout.
    En réexecutant cette requete elle me réenregistre tous les adhérents ou réunion pas seulement les derniers ajouter.

    C'est pour cela que je voudrais faire une requete ajout qui ne créera que les enregistrements manquant (nouveau adhérents et nouvelles réunion)

    voilou j'espère avoir été clair ce coups ci

    merci beaucoup pour le temps passé à m'aider....

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

Discussions similaires

  1. [2000] Un "casse tete" de requete :) Jointure avec conditions
    Par yepAccess dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 11/04/2008, 22h05
  2. requete calcul avec conditions
    Par boulou85 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 18/03/2008, 16h01
  3. Requete ajout avec table parametrable
    Par BugAmbulant dans le forum VBA Access
    Réponses: 9
    Dernier message: 05/07/2007, 13h22
  4. passer une requete ajout avec des enregitrement null
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 13/06/2006, 16h20
  5. [Access] requete sql avec condition sur date
    Par qeja dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/03/2006, 00h54

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