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 :

Arborescence et critères de requête


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut Arborescence et critères de requête
    Bonjour,

    Voilà un problème qui m'a l'air débile, mais qui m'agace depuis deux jours.
    J'ai une table secteur, machine et travaux.
    Une requête qui fait dépendre les machines du secteur sélectionné et une requête qui me donne les travaux selon les critères que j'entre dans le formulaire de sélection.

    J'ai un formulaire qui doit m'afficher les travaux selon des critères : date secteur et machine.
    J'ai donc une liste secteur, puis machine et la date à remplir sur mon formulaire de selection.

    J'aimerai, si je ne rentre pas de machine, qu'il affiche les travaux de toutes les machines du secteur. Sinon évidemment que ceux de la machine sélectionné.
    J'arrive à faire les deux séparément, mais pas les deux en même temps.
    Suis-je obligé de faire deux requêtes... ?

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour, c'est un problème classique et agaçant :-).

    Une solution est d'utiliser "like" au de lieu de "=".

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select TaSource.* from TaSource where TaSource.TonChamp like """" & [Forms]![TonForm]![TonChamp] & "*""";

    Ça marche bien si tout tes numéros ont le même nombre de chiffres. Sinon, si tu as par exemple 1, 10, 100 et que tu demandes like "1*" tu vas récupérer 1, 10 et 100.

    Si tu as ce cas de figure il va falloir faire un formulaire de recherche.

    Il y a plusieurs tutoriaux sur le sujet sur ce site.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Merci de ta réponse, mais je ne comprend pas tout :/

    Je met le code ou ? Rquête, liste de machine ?
    Et je ne comprend pas les """"" """""

    Désolé

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Le SQL mis en exemple (et à adapter à tes besoins) doit être utiliser comme source de ton formulaire d'affichage.

    Donc il convient de faire une requête et de définir cette requête comme source du formulaire.

    Si tu as besoin de plus de détails, n'hésite pas à demander.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Alors, j'ai :
    -un bouton qui ouvre le formulaire de critère ou on rentre Date secteur(listesecteur4) puis machine(listemachine4) ( non obligatoire). Il s'apelle : FD_critère_visu
    -Si je clique sur OK avec les critères de mon choix, il m'ouvre un Etat (VISU_PANNES) affichant toutes les données des pannes effectués.
    -Cet état a comme source la requête : RD_VISU qui contient la table PANNES ainsi que toutes les données qui s'y rapportent.
    DE PLUS dans cette requête, il y a des critère de date, secteur et machine celui sur secteur est : [Formulaires]![FP_Critere_visu]![listesecteur4] et celui sur machine est : [Formulaires]![FP_Critere_visu]![listemachine4].
    Cette requête fonctionne si je sélectionne secteur ET machine. Mais si je ne sélectionne pas de machine je veux qu'il m'affiche toutes les pannes du secteur choisit...

    J'espère avoir été plus clair

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    À priori, il faudrait modifier RD_VISU pour remplacer =[Formulaires]![FP_Critere_visu]![listemachine4] par like [Formulaires]![FP_Critere_visu]![listemachine4] & "*" ou like """" & [Formulaires]![FP_Critere_visu]![listemachine4] & "*""".

    Peux-tu poster le SQL ?

    (Si tu ne sais pas comment voir le SQL, aller dans l'éditeur de requête et appuyer sur le bouton SQL en haut à gauche).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    alors ça "marchotte".

    C'a maffiche toutes les pannes pour un secteur mais me demande toujours la valeur de la liste machine.
    Et sinon ca me demande aussi la valeur pour la liste machine quand je rentre une machine.

    voici le SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_D_Etat.Etat, T_D_Depanneur.Depanneur_Nom, T_Machine.Machine_Nom, T_Secteur.Secteur_Nom, T_D_Panne.Pannes_Intitule, T_D_Panne.Pannes_Duree, T_D_Panne.Pannes_Poste, T_D_Panne.Pannes_Date, T_D_Panne.Pannes_ID, T_Secteur.Secteur_ID, T_Machine.Machine_ID
    FROM T_Secteur INNER JOIN (T_Machine INNER JOIN (T_D_Etat INNER JOIN (T_D_Depanneur INNER JOIN T_D_Panne ON T_D_Depanneur.Depanneur_ID = T_D_Panne.CE_D_Depanneur) ON T_D_Etat.Etat_ID = T_D_Panne.CE_D_Etat) ON T_Machine.Machine_ID = T_D_Panne.CE_Machine) ON (T_Secteur.Secteur_ID = T_Machine.CE_Secteur) AND (T_Secteur.Secteur_ID = T_D_Panne.CE_Secteur)
    WHERE (((T_D_Panne.Pannes_Date) Between [Forms]![FD_Critere_visu]![D_debut] And [Forms]![FD_Critere_visu]![D_fin]) AND ((T_Secteur.Secteur_ID)=[Forms]![FD_Critere_visu]![listesecteur5]) AND ((T_Machine.Machine_ID) Like [Formulaires]![FP_Critere_visu]![listemachine5] & "*" Or (T_Machine.Machine_ID) Like """" & [Formulaires]![FP_Critere_visu]![listemachine5] & "*"""));

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Essaye :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_D_Etat.Etat, T_D_Depanneur.Depanneur_Nom, T_Machine.Machine_Nom, T_Secteur.Secteur_Nom, T_D_Panne.Pannes_Intitule, T_D_Panne.Pannes_Duree, T_D_Panne.Pannes_Poste, T_D_Panne.Pannes_Date, T_D_Panne.Pannes_ID, T_Secteur.Secteur_ID, T_Machine.Machine_ID
    FROM T_Secteur INNER JOIN (T_Machine INNER JOIN (T_D_Etat INNER JOIN (T_D_Depanneur INNER JOIN T_D_Panne ON T_D_Depanneur.Depanneur_ID = T_D_Panne.CE_D_Depanneur) ON T_D_Etat.Etat_ID = T_D_Panne.CE_D_Etat) ON T_Machine.Machine_ID = T_D_Panne.CE_Machine) ON (T_Secteur.Secteur_ID = T_Machine.CE_Secteur) AND (T_Secteur.Secteur_ID = T_D_Panne.CE_Secteur)
    WHERE (((T_D_Panne.Pannes_Date) Between [Forms]![FD_Critere_visu]![D_debut] And [Forms]![FD_Critere_visu]![D_fin]) AND ((T_Secteur.Secteur_ID)=[Forms]![FD_Critere_visu]![listesecteur5]) AND ((T_Machine.Machine_ID) Like """" & [Formulaires]![FP_Critere_visu]![listemachine5] & "*"""));

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    bonjour,

    après tests ça ne marche pas du tout :/. Il demande toujours la liste secteur mais n'affiche rien cette fois ci

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Peux-tu poster le SQL de ta requête actuelle ?

    Et aussi le SQL de la requête à l'origine, avant le changement pour le like ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Alors le SQL la affiche bien les données à condition que je remplisse secteur ET machine. Si je remplis que secteur il n'affiche rien.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T_D_Etat.Etat, T_D_Depanneur.Depanneur_Nom, T_Machine.Machine_Nom, T_Secteur.Secteur_Nom, T_D_Panne.Pannes_Intitule, T_D_Panne.Pannes_Duree, T_D_Panne.Pannes_Poste, T_D_Panne.Pannes_Date, T_D_Panne.Pannes_ID, T_Secteur.Secteur_ID, T_Machine.Machine_ID, T_D_Panne.CE_D_Etat
    FROM T_Secteur INNER JOIN (T_Machine INNER JOIN (T_D_Etat INNER JOIN (T_D_Depanneur INNER JOIN T_D_Panne ON T_D_Depanneur.Depanneur_ID = T_D_Panne.CE_D_Depanneur) ON T_D_Etat.Etat_ID = T_D_Panne.CE_D_Etat) ON T_Machine.Machine_ID = T_D_Panne.CE_Machine) ON (T_Secteur.Secteur_ID = T_Machine.CE_Secteur) AND (T_Secteur.Secteur_ID = T_D_Panne.CE_Secteur)
    WHERE (((T_D_Panne.Pannes_Date) Between [Forms]![FD_Critere_modif]![D_debut] And [Forms]![FD_Critere_modif]![D_fin]) AND ((T_Secteur.Secteur_ID)=[Forms]![FD_Critere_modif]![listesecteur6]) AND ((T_Machine.Machine_ID)=[Formulaires]![FD_Critere_modif]![listemachine6]));

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    OK essaye :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T_D_Etat.Etat, T_D_Depanneur.Depanneur_Nom, T_Machine.Machine_Nom, T_Secteur.Secteur_Nom, T_D_Panne.Pannes_Intitule, T_D_Panne.Pannes_Duree, T_D_Panne.Pannes_Poste, T_D_Panne.Pannes_Date, T_D_Panne.Pannes_ID, T_Secteur.Secteur_ID, T_Machine.Machine_ID, T_D_Panne.CE_D_Etat
    FROM T_Secteur INNER JOIN (T_Machine INNER JOIN (T_D_Etat INNER JOIN (T_D_Depanneur INNER JOIN T_D_Panne ON T_D_Depanneur.Depanneur_ID = T_D_Panne.CE_D_Depanneur) ON T_D_Etat.Etat_ID = T_D_Panne.CE_D_Etat) ON T_Machine.Machine_ID = T_D_Panne.CE_Machine) ON (T_Secteur.Secteur_ID = T_Machine.CE_Secteur) AND (T_Secteur.Secteur_ID = T_D_Panne.CE_Secteur)
    WHERE (((T_D_Panne.Pannes_Date) Between [Forms]![FD_Critere_modif]![D_debut] And [Forms]![FD_Critere_modif]![D_fin]) 
                   AND ((T_Secteur.Secteur_ID)=[Forms]![FD_Critere_modif]![listesecteur6]) 
                   AND ((T_Machine.Machine_ID) like """" & [Forms]![FD_Critere_modif]![listemachine6] & "*""));

    La tu devrais avoir à fournir le secteur mais si tu laisse à blanc la machine tu devrais tout avoir.

    Attention j'ai mis chaque AND dans la clause WHERE sur sa propre ligne pour plus de lisibilité mais il se peut que Access râle et qu'il faille les mettre tous sur la même ligne.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Merci pour ton travail, mais une erreur persiste "syntaxe d'écriture incorrecte" sur le WHERE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (((T_D_Panne.Pannes_Date) Between [Forms]![FD_Critere_modif]![D_debut] And ([Forms]![FD_Critere_modif]![D_fin])) AND ((T_Secteur.Secteur_ID)=[Forms]![FD_Critere_modif]![listesecteur6])  AND ((T_Machine.Machine_ID) like """" & [Forms]![FD_Critere_modif]![listemachine6] & "*""));
    J'ai regardé les parentheses sont bonnes et les noms aussi pourtant

  14. #14
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    OK on va arrêter de se battre avec le SQL.

    Reprend ta requête d'origine et ouvre là avec l'éditeur de requête.
    En mode conception, va dans la colonne T_Machine.Machine_ID et remplace [Formulaires]![FD_Critere_modif]![listemachine6] par like """" & [Forms]![FD_Critere_modif]![listemachine6] & "*""".

    Là, ça devrait fonctionner.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Nancy
    Inscrit en
    Avril 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Nancy

    Informations forums :
    Inscription : Avril 2016
    Messages : 92
    Points : 17
    Points
    17
    Par défaut
    Toujours pas... il demande toujours la valeur :/
    Tu veux la BDD ?

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Tu veux la BDD ?
    Non merci je ne pourrais pas m'en servir.

    J'avoue ne pas comprendre car même si le test était incorrect, il ne devrait pas de te demander la valeur puisque il va la chercher dans le formulaire.

    Peux-tu poster une copie d'écran de la demande de paramètre ?

    Il y a peut-être une erreur dans l'orthographe du champ ou un truc du genre.

    Vérifie aussi si le formulaire FD_Critere_modif est bien ouvert au moment de l'éxécution.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Critère de requête
    Par laurentabj dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 27/12/2006, 18h22
  2. Réponses: 1
    Dernier message: 04/09/2006, 21h02
  3. Critère de requête avec une zone de liste dans un formulaire
    Par Dehez dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2006, 12h49
  4. Réponses: 41
    Dernier message: 06/02/2006, 23h49
  5. Critère pour requête d'ajout
    Par Virgile59 dans le forum Access
    Réponses: 4
    Dernier message: 23/09/2005, 16h56

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