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

VBA Access Discussion :

Requete dans une zone de texte


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut Requete dans une zone de texte
    Bonjour, j'ai créér un fichier Access pour la saisie de la production.

    Or les opérateurs ont une capacité à atteindre pour la production des pièces. Cette capacité de pièces change suivant la machine la ligne et l'équipe(matin, soir, nuit) dans lequel se trouve l'opérateur.
    Pour cela j'ai créé une table.
    J'ai créé un formulaire permettant de saisir toutes les données pour pouvoir calculer le TRS( le rendement de l'opérateur en pourcentage). J'ai créé 3 cases d'option pour chaque équipe et j'aimerai qu'en fonction de la case cochée et de la machine et la ligne choisie, cela me renvoie la capacité de production dans une zone de texte pour qu'après je puisse calculer le TRS. Je me doute bien qu'il faut réaliser une requete recherchant les infos de la table en question mais je ne trouve pas la solution.
    Merci de bien voulair m'aiguiller.

  2. #2
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Bonjour,

    Merci d'envoyer ton code.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    j'ai un peu avancé dans le projet. Mais j'ai un problème, cela me renvoie 0 dans le message. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Matin.Value = True Then
    Set bd = CurrentDb
    nbprojet2 = "SELECT projet.equipematin FROM projet WHERE (((projet.nommachine)=[Formulaires]![Formulaire1]![machine]) AND ((projet.nomprojet)=[Formulaires]![Formulaire1]![projet1]));"
    MsgBox nbprojet
     
    End If

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    maintenant ca m'affiche Select... dans le message. J'aimerai savoir comment renvoyer une valeur dans un champ résultant d'une requete comme celle-ci.

  5. #5
    Membre actif Avatar de spaiku
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 209
    Points : 293
    Points
    293
    Par défaut
    Tu dois utiliser spécifier la source du contrôle avec la propriété SourceControl.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    et comment?je sais je ne suis pas très bon en vb...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
     
    If Matin.Value = True Then
    Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
        Dim sSQL As String
        ' Ouverture de la base de données
        Set db = CurrentDb
        sSQL = "SELECT projet.equipematin FROM projet WHERE (((projet.nommachine)=[Formulaires]![Formulaire1]![machine]) AND ((projet.nomprojet)=[Formulaires]![Formulaire1]![projet1]));"
        ' Ouverture du recordset
        Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
        ' Fermeture du Recordset
     
        rst.Close
     
     
    End If

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 640
    Points : 34 349
    Points
    34 349
    Par défaut
    bonjour, la requete ne connait pas en elle meme les forms,
    essaie en adaptant à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "SELECT projet.equipematin FROM projet WHERE (((projet.nommachine)='" & [Formulaires]![Formulaire1]![machine] &"') AND ((projet.nomprojet)='" & [Formulaires]![Formulaire1]![projet1] &"''));"

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    cela me met une erreur comme quoi il est impossible de trouver le champ "l" auquel il fait référence dans votre expression.

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

    Il y'a une quote ' de trop à la fin. Dans la mesure où tout tes champs sont au format texte.

    Starec

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 548
    Points
    24 548
    Par défaut
    Bonjour,

    Pour comprendre ton problème il me semble qu'il te faut un petit cour théorique.

    Une requete renvoie systèmatiquement un objet de type recordset, même si celle-ci ne renvoie qu'un enregistrement contenant un seul champ.
    Une zone texte, comme un msgbox attend toujours un objet de type texte (ou numérique)

    Il y a donc incompatibilité entre ce que tu récupères et le controle où tu souhaites le voir apparaitre.

    Pour récupèrer une information d'une table il te faut utiliser une fonction de domaine (comme dlookup) ou la méthode fields() d'un recordset.

    Pour la première solution voir le tuto sur les fonctions de domaine, pour la seconde solution voir le tuto sur DAO.

    Cordialement,

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par loufab Voir le message
    Bonjour,


    Pour la première solution voir le tuto sur les fonctions de domaine, pour la seconde solution voir le tuto sur DAO.

    Cordialement,
    Suis-je bête, il m'a bien semblé avoir vu un tuto sur les fonctions de domaine là : http://starec.developpez.com/tuto/fonctionsdomaines/

    Starec

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    je ne suis vraiment pas très doué en vb...Que dois-je utiliser comme fonction? Merci

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

    Comme à priori c'est une recherche sans calcul, regarde du côté de DLookup.
    Si tu as l'article sur les fonctions de domaine, tu trouveras un tableau qui récapitule les fonctions et leur signification succincte.

    Starec

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 129
    Points : 51
    Points
    51
    Par défaut
    ce que je ne comprend pas, c'est que la requete doit me renvoyer une seule valeur et donc je ne dois pas avoir besoin de DLookup() si?

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

    Toutes les fonctions de domaine ne renvoient qu'une valeur.
    La fonction DLookup remplace une requête Select en SQL.
    L'avantage est que tu peux l'utiliser directement dans une zone de texte (attention syntaxe en Française).
    Tout est expliqué dans l'article.

    Starec

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 548
    Points
    24 548
    Par défaut
    Citation Envoyé par magictom42 Voir le message
    ce que je ne comprend pas, c'est que la requete doit me renvoyer une seule valeur et donc je ne dois pas avoir besoin de DLookup() si?
    Que la requete te renvoie une, plusieurs ou aucune valeur, elle renvoie un objet de type recordset et non un objet de type natif (string, long...)

    Tu dois garder à l'esprit que c'est le type d'objet renvoyé qui prime sur tout le reste.

Discussions similaires

  1. [AC-97] Afficher résultat de requête dans une zone de texte
    Par paflolo dans le forum IHM
    Réponses: 21
    Dernier message: 28/04/2022, 12h57
  2. comment afficher une requete dans une zone de texte
    Par j.homme dans le forum Langage
    Réponses: 7
    Dernier message: 11/05/2010, 14h57
  3. Réponses: 3
    Dernier message: 13/12/2007, 17h58
  4. Réponses: 1
    Dernier message: 11/05/2006, 16h37
  5. Réponses: 3
    Dernier message: 02/11/2005, 02h45

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