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 :

Fonction Environ() dans une requete


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 194
    Points : 40
    Points
    40
    Par défaut Fonction Environ() dans une requete
    Bonsoir la communauté DEV

    J'ai une petite demande à vous faire concernant la fonction Environ("USERNAME") où j'ai constamment un message d'erreur....
    Fonction "environ" non définie dans l'expression
    Je souhaite utiliser cette fonction comme critère dans une requête de sélection, Je suis sous Windows 10 Access 2016.

    Si quelqu’un a eu idée ? Dans un formulaire j'utilise le code suivant et ça fonctionne..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    Me.U_Name = Environ$("username")
    End Sub

    Je pourrais également mettre comme critère le chemin de mon champ texte du formulaire mais faudrait que mon formulaire soit ouvert pour que ça fonctionne,
    Donc j'aimerais intégrer cela directement dans mon critère.

    Cordialement,

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Dans un module standard, crée un clone de la fonction Environ (fonction VBA mais pas fonction Access)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Environ1(Value As String)
      Environ1 = Environ(Value)
    End Function
    Tu pourras l'utiliser dans ta requête

    Nom : 2020-03-12_093200.png
Affichages : 601
Taille : 12,7 Ko


    Nom : 2020-03-12_093227.png
Affichages : 553
Taille : 2,8 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 194
    Points : 40
    Points
    40
    Par défaut
    Salut Pierre,

    Tu as la solution à tous mes problème j'ai l'impression

    Ça fonctionne nickel, c'est OK pour moi je vais donc clore le sujet car je pense pas avoir d'autre demande qui tourne autour du sujet.


    Cordialement,

  4. #4
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 194
    Points : 40
    Points
    40
    Par défaut
    Hello tout le monde,

    Je me permet de ré-ouvrir ce post car j'ai un problème avec un critère d'une des mes requête de sélection..
    Autrefois ça fonctionné très bien mais depuis que j'ai crée une nouvelle BDD je rencontre des problèmes lors de l’exécution de la requête qui m’affiche aucun résultat.

    J'aimerais avant tout une explication du déroulement du processus et savoir ce que veulent dire les différents éléments qui compose le module.

    Voici donc le module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Environ1(Value As String)
      Environ1 = Environ(Value)
    End Function
    Et maintenant le critère dans ma requête :

    Nom : 2020-08-13_16h20_03.png
Affichages : 536
Taille : 16,9 Ko

    Vous l'aurez compris le champ à filtrer est "UserID" mais je ne comprend pas toutes les valeurs qui figure dans le champ critère.
    Et la valeur recherché est de filtrer le champ en rapport au nom de la session Windows utilisant actuellement la BDD

    Pourquoi il es écrit "Username' dans le champ critère ?

    Qu’ecce qui pourrait empêcher le bon déroulement de ma requête ? Je ne comprend pas !

    Voila si quelqu’un se sent d'attaque pour m'aidez ce serait pas de refus car j'ai tout essayé mais en sans succès.

    Cordialement,

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    La fonction VBA Environ(Type) renvoie la valeur d'une variable d'environnement. Dans le cas présent, la valeur est le username de la personne connecté au pc. La fonction personnalisée Environ1 a été créée en VBA car il n'est pas possible d'exploiter directement la fonction VBA native dans une requête Access créée via le QBE (Query by Exemple => l'interface de création des requêtes).

    Donc il se pourrait que le username ne soit pas présent dans la colonne de ta requête => 0 lignes retournées par la requête.

    Ta requête utilise également une autre fonction DerniereDate qui reçoit deux paramètres. Mais c'est également une fonction personnalisée. C'est peut-être à ce niveau-là que le bât blesse. Quel est le code de cette fonction? Es-tu certaine des paramètres que tu lui passes ("date" et "TBL_Mouvement" en String)?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 194
    Points : 40
    Points
    40
    Par défaut Re
    Pierre,

    Alors pour répondre à ta demande concernant le code du champ [DateMouvt] le voici :
    Pour information il va chercher lles enregistrements ayant a date la plus récente présente dans la table excepté la date du jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Compare Database
    Option Explicit
     
    Public Function DerniereDate(dtMvt As String, tbMvt As String) As Date
        DerniereDate = DateValue(Nz(DMax(dtMvt, tbMvt, "[" & dtMvt & "]<Date()"), #1/1/1500#))
    End Function
    Ensuite pour t'expliquer toute l'histoire meme si je ne pense pas que ca change quelques chose aux problèmes :

    A l'origine ce sont des tables liée en réseau du boulot que j'ai convertie en table locale pour être en situation la plus réel possible pour construire mes requêtes à la maison..
    Je viens de faire un test à la maison sur la mème requête qui ne fonctionnait pas au boulot et ça fonctionne sur ma table locale..
    J'ai volontairement changer un champ avec le nom de ma session Windows et j'obtiens bien un résultat.

    Donc je suis assez dubitative maintenant...

    La seule chose que j'ai faite au boulot c'est supprimer mes tables locale pour importer les tables réseaux..

    Cordialement,

    Nom : 2020-08-13_17h54_14.png
Affichages : 514
Taille : 23,5 KoNom : 2020-08-13_17h55_05.png
Affichages : 497
Taille : 7,1 Ko

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Dans l'illustration de ta requête, tu passes "date" comme paramètre. A mon sens, tu dois passer une date et pas le mot date. Tu devrais passer quelque chose comme #13/08/2020#. Cela dit, ça me semble bizarre de passer une date en texte, car tu t'exposes à quelques déconvenues quant à l'interprétation de ce qui passé
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 194
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Dans l'illustration de ta requête, tu passes "date" comme paramètre. A mon sens, tu dois passer une date et pas le mot date. Tu devrais passer quelque chose comme #13/08/2020#. Cela dit, ça me semble bizarre de passer une date en texte, car tu t'exposes à quelques déconvenues quant à l'interprétation de ce qui passé
    Salut,

    Alors le but n'est pas de ciblé une date précise mais de faire en sorte que le module aille chercher la date la plus récente présente dans la table sauf la date du jour.
    Donc je n'ai pas trop compris ou tu veux en venir... dans un même temps je suis une manche sur Access donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function DerniereDate(dtMvt As String, tbMvt As String) As Date
        DerniereDate = DateValue(Nz(DMax(dtMvt, tbMvt, "[" & dtMvt & "]<Date()"), #1/1/1500#))
    End Function
    Nom : 2020-08-13_17h54_14.png
Affichages : 515
Taille : 23,5 Ko



    Donc pour toi je ne devrais pas passer le champ date en paramètre ? Qu'elle solution devrais-je adopter ?

Discussions similaires

  1. [AC-2003] Fonction nz dans une requete access
    Par facteur dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 17/07/2014, 15h53
  2. [AC-2003] La fonction min dans une requete
    Par YVES69 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 19/11/2012, 21h00
  3. fonction somme dans une requete
    Par selmaa dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/05/2011, 14h51
  4. [AC-2003] Fonction dateadd dans une requete
    Par kimosamet dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/02/2011, 00h11
  5. Appeler une fonction php dans une requete mysql
    Par yobogs dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/11/2007, 13h43

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