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 :

Comment faire une condition en utilisant un champs de requete de calcul ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    programmeur du dimanche
    Inscrit en
    Avril 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : programmeur du dimanche

    Informations forums :
    Inscription : Avril 2016
    Messages : 37
    Par défaut Comment faire une condition en utilisant un champs de requete de calcul ?
    Bonjour,

    J'effectue une petite programmation de prêt de clés et je bloque sur un détail.

    En gros, j'ai un formulaire qui me permet de lister tous mes prêteurs. Afin d'éviter d'effacer un prêteur qui n'aurait pas effectué le retour de toutes les clés qui lui ont été remises, j'aimerais pouvoir mettre une condition qui vérifie si un prêteur a toujours des clés avant de pouvoir le supprimer de la liste.

    Étape 1 : ce que j'ai déjà
    Dans ma requête Vérification_avant_Retrait, mon champ CompteClé de ma requête me permet de compter le nombre de clés non retournées de l'utilisateur

    Étape 2 : ce que je ne parviens pas
    Pouvoir effectuer une condition basée sur le champ CompteClé de ma requête Vérif_avant_Retrait pour empêcher d'effacer l'utilisateur qui n'a pas remis toutes ses clés.

    Exemple :
    Si le nombre de clés de ma requête sélection n'est pas égal à zéro ; zone de texte_1 affiche le message "impossible d'effacer l'utilisateur" ; la zone de texte_1 affiche le message "L'utilisateur a remis toutes ses clés"

    En espérant d'avoir été claire dans mon explication, merci de votre aide

  2. #2
    Membre averti
    Homme Profil pro
    programmeur du dimanche
    Inscrit en
    Avril 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : programmeur du dimanche

    Informations forums :
    Inscription : Avril 2016
    Messages : 37
    Par défaut
    J'ai essayé cette ligne dans ma zone de texte mais ca ne fonctionne pas, #NOM ? apparait dans ma zone texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IIF( [Vérif_avant_Retrait]![CompteDenom_clé] = 0; "NON"; "OUI")
    Pourtant, l'orsque je fait exécuter ma requête regroupement Vérif_avant_Retrait, mon champs CompteDenom_clé retourne le chiffre 2.

    J'ai recopié la requête SQL comme condition et cela ne fonctionne pas plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux((SELECT Count(Clés.nom_clé) AS CompteDenom_clé, Clés.Detenteur FROM [User] INNER JOIN Clés ON User.Nom = Clés.Detenteur GROUP BY Clés.Detenteur HAVING (((Clés.Detenteur)=[Formulaires]![F_User]![F_suivi_user_SF].[Formulaire]![Nom]));)=0;"Oui";"Non")

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 973
    Par défaut
    bonjour,
    même si elles sont accessibles depuis le générateur d'expression, les colonnes des requêtes (et des tables) ne sont pas utilisables directement dans les zones de texte d'un formulaire: seules les colonnes de la source contrôle du formulaire sont utilisables.
    il faut passer par une fonction de domaine, RechDom en l'occurrence (Dlookup en anglais) qui permet de récupérer la valeur d'une colonne de la requête pour autant que cette requête renvoie une valeur unique avec la condition, sinon la fonction renverra (aléatoirement) la première trouvée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(RechDom("CompteDenom_clé";"Vérif_avant_Retrait";"Detenteur=" & [F_suivi_user_SF].[Formulaire]![Nom])=0;"Oui";"Non")
    à noter quand même que le test des conditions des 2 dernières formules postées sont contradictoires (j'ai pris le test de la dernière):
    =IIF( [Vérif_avant_Retrait]![CompteDenom_clé] = 0; "NON"; "OUI")

    =VraiFaux((SELECT Count(Clés.nom_clé) AS CompteDenom_clé, Clés.Detenteur FROM [User] INNER JOIN Clés ON User.Nom = Clés.Detenteur GROUP BY Clés.Detenteur HAVING (((Clés.Detenteur)=[Formulaires]![F_User]![F_suivi_user_SF].[Formulaire]![Nom])); )=0;"Oui";"Non")

  4. #4
    Membre averti
    Homme Profil pro
    programmeur du dimanche
    Inscrit en
    Avril 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : programmeur du dimanche

    Informations forums :
    Inscription : Avril 2016
    Messages : 37
    Par défaut
    Je ne savais pas ce détail, je regarde cela un peu plus tard et je te reviens.

    Merci pour l'explication

    Pour te rassurer, la condition oui , non des 2 test soumis est bidon pour l'instant car elle me sert de test afin de valider le bon déroulement qui sera effectuer une fois que le tout sera fonctionnel.

  5. #5
    Membre averti
    Homme Profil pro
    programmeur du dimanche
    Inscrit en
    Avril 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : programmeur du dimanche

    Informations forums :
    Inscription : Avril 2016
    Messages : 37
    Par défaut
    En premier lieu, j'ai recopier ta ligne de code dans ma boite de texte elle ne marchait pas.


    Après avoir effectué des recherches sur la fonction RechDom, et suite à plusieurs messages d'erreurs, je suis parvenu à modifier la ligne, car selon les exemples que je retrouvais, il manquait des crochets et le critère de recherche était mal présenté (erreur de ma part !).

    au final, voici le résultat de ma ligne de code qui fonctionne très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(RechDom("[CompteDenom_clé]";"Vérif_avant_Retrait";"[Detenteur]=[Nom]")>=1;"OUI";"NON")

    Merci de m'avoir soumis la piste de départ, car je ne connaissais pas cette possibilité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment faire une condition ou une instruction avec gtk
    Par Invité dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 31/05/2009, 17h06
  2. Comment faire une condition aux limites?
    Par j-mike dans le forum MATLAB
    Réponses: 10
    Dernier message: 09/10/2008, 15h28
  3. Comment faire une condition switch
    Par y-bab dans le forum IHM
    Réponses: 3
    Dernier message: 07/08/2008, 10h37
  4. Comment faire une condition en C#
    Par Calvein dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/06/2008, 11h31
  5. Réponses: 16
    Dernier message: 06/04/2007, 14h36

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