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 :

Réquête sql ne fonctionne pas correctement


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Réquête sql ne fonctionne pas correctement
    Bonjour à tous,

    Je suis un débutant en Access et j'aimerais avoir votre aide sur une de mes requêtes qui ne fonctionne pas correctement

    - Alors j'ai créé une requête d'action "maj-panneaux2" dont le code sql est le suivant :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Panneau INNER JOIN Location ON Panneau.ref_panneau = Location.[Panneaux disponibles] SET Panneau.louer = No
    WHERE (((Location.date_fin)<Date()));

    - Quand je fais une location (à travers le formulaire "Enregistrement d'une location") le champ "louer" du panneau (dans la table panneau) concerner est mis à yes

    - Quand la date_fin de location du panneau est arrivé à échéance; le champ "louer" du panneau concerner est mis à no par ma requête ""maj-panneaux2"

    - Lorsque ce même panneau fait l'objet d'une autre location avec une date_fin non arrivé à échéance (toujours en location), ma requête ""maj-panneaux2" met encore ce panneau à no alors que date_fin > date()

    - Dans ma table location sont enregistrées toutes mes locations en cours et finie

    voici le lien de mon fichier pour une meilleure compréhension : https://www.transfernow.net/81hde3x8hrgl

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 621
    Points : 14 577
    Points
    14 577
    Par défaut
    Bonsoir,
    c'est parce que ta requête maj_panneaux n'est pas sélective: elle met à jour tous les enregistrements, il faut sélectionner l'identifiant du panneau de l'enregistrement en cours du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Panneau INNER JOIN Location ON Panneau.ref_panneau = Location.[Panneaux disponibles] SET Panneau.louer = Yes
    WHERE (((Panneau.ref_panneau)=[Formulaires]![Enregistrement Location]![Panneaux disponibles]));
    [EDIT]:Cette modification n'a rien à voir avec ton problème, mais il faut quand même la faire, pour la requête maj_panneaux2, j'ai vu d'où vient le problème, je regarde et te fais un retour
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 621
    Points : 14 577
    Points
    14 577
    Par défaut
    bonsoir,
    il faut trouver la plus grande date de fin de chaque panneau avec une fonction de domaine (pour permettre la mise à jour, car une requête de regroupement ne le permet pas) et vérifier si c'est bien inférieur à la date du jour.
    Du coup, plus besoin de faire la jointure avec la table Location:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Panneau SET Panneau.louer = No
    WHERE (((Panneau.louer)=True) AND ((DMax("[date_fin]","Location","[Panneaux disponibles] ='" & [Panneau].[ref_panneau] & "'")<Date())=True));
    et je testerai si "louer" est à Vrai, ce qui évite une mise à jour inutile.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,
    il faut trouver la plus grande date de fin de chaque panneau avec une fonction de domaine (pour permettre la mise à jour, car une requête de regroupement ne le permet pas) et vérifier si c'est bien inférieur à la date du jour.
    Du coup, plus besoin de faire la jointure avec la table Location:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Panneau SET Panneau.louer = No
    WHERE (((Panneau.louer)=True) AND ((DMax("[date_fin]","Location","[Panneaux disponibles] ='" & [Panneau].[ref_panneau] & "'")<Date())=True));
    et je testerai si "louer" est à Vrai, ce qui évite une mise à jour inutile.
    Bonsoir, super l'idée
    Je l'ai testé mais à l'exécution de la requête il n'est demander panneaux.ref_panneau en paramètre
    J'aimerais que la requête s'exécute sans paramètre.

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 621
    Points : 14 577
    Points
    14 577
    Par défaut
    bonjour,
    Je l'ai testé mais à l'exécution de la requête il n'est demander panneaux.ref_panneau en paramètre
    J'aimerais que la requête s'exécute sans paramètre.
    bizarre, cela devrait être le cas.
    Ce n'est pas parce que Panneau a un x ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. [MySQL] Ma requête SQL ne fonctionne pas
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/01/2007, 13h41
  2. [SQL] PB : Jointure SQL ne fonctionne pas..
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/09/2006, 15h03
  3. Le débogage ne fonctionne pas correctement
    Par BNS dans le forum Visual C++
    Réponses: 4
    Dernier message: 13/07/2006, 14h59
  4. Réponses: 13
    Dernier message: 31/08/2005, 15h03

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