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

IHM Discussion :

Modifier critére de requête avec VBA


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Apprenti Management Unité de Production
    Inscrit en
    Décembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Management Unité de Production

    Informations forums :
    Inscription : Décembre 2012
    Messages : 32
    Points : 11
    Points
    11
    Par défaut Modifier critére de requête avec VBA
    Bonjour,

    J'ouvre une nouvelle discutions car la demande n'ait pas la même et cela sera plus simple pour les gens qui cherche une réponse à leur question.

    J'explique donc mon problème :

    J'ai une requête avec comme code SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [TEST PLAN DE MAINTENANCE].PLAN_Machine, [TEST PLAN DE MAINTENANCE].PLAN_Station, [TEST PLAN DE MAINTENANCE].PLAN_Intervenant, [TEST PLAN DE MAINTENANCE].PLAN_Action, [TEST PLAN DE MAINTENANCE].PLAN_Semaine_N°7, [TEST PLAN DE MAINTENANCE].PLAN_Pièces, [TEST PLAN DE MAINTENANCE].PLAN_Quantité, [TEST PLAN DE MAINTENANCE].PLAN_Validation
    FROM [TEST PLAN DE MAINTENANCE]
    WHERE ((([TEST PLAN DE MAINTENANCE].PLAN_Semaine_N°7)=True));
    J'ai un formulaire avec un menu déroulant qui contient : XX ; XY ; YX
    Et une zone de texte pouvant contenir 52 valeurs ( de 1 à 52 ).

    Je souhaite que :

    -Quand dans mon menu déroulant j'ai une des trois valeurs alors elle s'affiche comme critère dans ma requête pour le champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [TEST PLAN DE MAINTENANCE].PLAN_Intervenant,
    -Quand j'ai taper une de mes 52 valeurs on va prendre Semaine_N°9 alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [TEST PLAN DE MAINTENANCE].PLAN_Semaine_N°7)
    devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [TEST PLAN DE MAINTENANCE].PLAN_Semaine_N°9)
    Si quelqu'un connais le code qui pourrait me faire cela car impossible de trouver une explication concrète et idéal sur le net.

    Merci beaucoup.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 551
    Points
    24 551
    Par défaut
    Bonjour,

    Tu peux composer une requpete dynamiquement avec VBA (comme tu le dis dans ton titre).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dim vlsql as String
    vlsql = "SELECT [TEST PLAN DE MAINTENANCE].PLAN_Machine, [TEST PLAN DE MAINTENANCE].PLAN_Station, [TEST PLAN DE MAINTENANCE].PLAN_Intervenant, [TEST PLAN DE MAINTENANCE].PLAN_Action, [TEST PLAN DE MAINTENANCE].PLAN_Semaine_N°7, [TEST PLAN DE MAINTENANCE].PLAN_Pièces, [TEST PLAN DE MAINTENANCE].PLAN_Quantité, [TEST PLAN DE MAINTENANCE].PLAN_Validation
    FROM [TEST PLAN DE MAINTENANCE] WHERE True "
    if not isnull(me.malisteXY) then
    vlsql = vlsql & " AND [TEST PLAN DE MAINTENANCE].PLAN_Intervenant='" & me.malisteXY & "'"
    endif
    if not isnull(me.maliste1_52) then
    vlsql = vlsql & " AND [TEST PLAN DE MAINTENANCE].[PLAN_Semaine_N°" & me.maliste1_52 & "]=TRUE" 
    endif
    vlsql = vlsql & ";"
    Voilà ! Après adaptation ça doit foncitonner.
    Le where True permet de s'affranchir des tests de présence pour les AND.

    Si tu as un problème de débogage il existe le tuto pour ce genre de montage.

    Cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Apprenti Management Unité de Production
    Inscrit en
    Décembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Management Unité de Production

    Informations forums :
    Inscription : Décembre 2012
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Merci de ta réponse,

    Par conter il ne veut rien savoir pour Where True.
    Il me met automatiquement des " a la fin de la première ligne et n'est pas décider à les enlever.
    Il me surligne de rouge le FROM.

    Un fois cela "résolu" , en tout cas pas de message d'erreur, rien ne ce passe.

    Ou alors un méssage fonction non définis pour ma :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Commande0_Click()
    C'est moi qui merdouille ?

    Edit :

    Ba non j'ai beau le retourner dans tout les sens ça marche pas.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 551
    Points
    24 551
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    vlsql = "SELECT [TEST PLAN DE MAINTENANCE].PLAN_Machine, [TEST PLAN DE MAINTENANCE].PLAN_Station, [TEST PLAN DE MAINTENANCE].PLAN_Intervenant, [TEST PLAN DE MAINTENANCE].PLAN_Action, "
     
    if not isnull(me.maliste1_52) then
       vlsql = vlsql & " [TEST PLAN DE MAINTENANCE].[PLAN_Semaine_N°" & me.maliste1_52 & "], " 
    endif
     
    vlsql = vlsql & " [TEST PLAN DE MAINTENANCE].PLAN_Pièces, [TEST PLAN DE MAINTENANCE].PLAN_Quantité, [TEST PLAN DE MAINTENANCE].PLAN_Validation "
    vlsql = vlsql & " FROM [TEST PLAN DE MAINTENANCE] WHERE True "
    Découpe ta ligne SELECT et profites en pour traiter également le champ N° comme ci-plus haut.

    Regarde le tuto sur le débogage des requêtes pour finir la mise au point du code.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Apprenti Management Unité de Production
    Inscrit en
    Décembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Management Unité de Production

    Informations forums :
    Inscription : Décembre 2012
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Aucun bug mais rien ne ce passe.

    Je ne comprend pas comment cela peut marcher alors que dans le code il n'y aucune référence a ma requête de nom "Requêtetruc" ?

    J'ai repris le code mis dans un bouton pour lancement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim vlsql As String
     
    vlsql = "SELECT [TEST PLAN DE MAINTENANCE].PLAN_Machine, [TEST PLAN DE MAINTENANCE].PLAN_Station, [TEST PLAN DE MAINTENANCE].PLAN_Intervenant, [TEST PLAN DE MAINTENANCE].PLAN_Action, "
     
    If Not IsNull(Me.Modifiable1) Then
       vlsql = vlsql & " [TEST PLAN DE MAINTENANCE].[PLAN_intervenant" & Me.Modifiable1 & "], "
    End If
     
    vlsql = vlsql & " [TEST PLAN DE MAINTENANCE].PLAN_Pièces, [TEST PLAN DE MAINTENANCE].PLAN_Quantité, [TEST PLAN DE MAINTENANCE].PLAN_Validation "
     
    vlsql = vlsql & " FROM [TEST PLAN DE MAINTENANCE] WHERE True "
    Ou alors c'est moi qui vaut pas une peau de lapin, c'est fort possible d'ailleurs

  6. #6
    Membre à l'essai
    Homme Profil pro
    Apprenti Management Unité de Production
    Inscrit en
    Décembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Management Unité de Production

    Informations forums :
    Inscription : Décembre 2012
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Bon plus besoin de ce prendre la tête pour l'intervenant cela marche en mettant une simple ligne dans le critére de ma requête:

    [Formulaires]![formulaire1]![modifiable1]

    Je choisi dans ma listbox , je lance ma requête qui ce met a jour toute seul.

    Reste le moyen pour les semaines.

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 551
    Points
    24 551
    Par défaut
    C'est une autre solution possible.

    Par contre tu as raté cette information pour faire fonctionner le cas précédent.

    Regarde le tuto sur le débogage des requêtes pour finir la mise au point du code.

Discussions similaires

  1. [AC-2003] Critère de requête avec OLE
    Par YakiCola dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/05/2013, 11h14
  2. [AC-2003] Problème création de requête avec VBA
    Par Sylas dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/11/2012, 14h35
  3. Requête avec VBA
    Par egg3774 dans le forum VBA Access
    Réponses: 17
    Dernier message: 29/08/2007, 02h38
  4. 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
  5. Réponses: 2
    Dernier message: 17/10/2005, 14h58

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