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 :

Condition if sur une requête [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut Condition if sur une requête
    Bonjour a tout le monde, je suis nouveau sur ACCESS 2010, et j'ai un petit problème.
    Enfin j'aimerais definir une condition IF sur des requêtes et je galere un peu.
    en fait, j'ai 3 requêtes ( requete1,requete2,requete3)
    et j'aimerai ouvrir la requête 1 et selon sont resultat, je choisi le champ position sur cette requête,
    et si position= "inferieur" j'aimerais executer le requête2 et sinon exécuter la requête 3. J'ai essayer de faire ca avec les macro, mais sauf que la macro s'arrete toujour a la condition "IF" et le else n'est jamais évaluer. Je n'ai jamais fais du VBA, alors si une âme charitable pouvais me donner une solution soit avec les macro, ou un code en vba, je suis prenneur (sachant que ca serai quand mieux si la macro marchait) je vous l'ecris en pseudo-code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    open requete1
    if position="inf"
    close requete1 and open requete2
    else 
    open requete3

    je ne sais pas si c'est assez explicite comme ca.
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    La fonction DLookup devrait peut être allé pour ton besoin, avec quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    position = DLookup("[position]", "requete1", "critères éventuels")
    if position="inf"
    docmd.openquery("requete2")
    else 
    docmd.openquery("requete3")
    end if
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    d'accord, je teste ca, et je te dis si ca marche

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Pour la fonction tu as des explications .
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Bonjour, oui pour la solution d'hier j'avais fais un truc avant, mais mon code n'arrive pas à compiler, j'ai essayer de cocher des éléments dans la fenêtre "références" mais à chaque je fois je reçois un message du style: ""erreur de compilation type défini par l'utilisateur non défini"" Voici mon code ci-dessous:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Commande4_Click()
    Dim strSQL2 As String
    Dim db As Database
    Set db = CurrentDb()
    Dim rsProduit As ADODB.Recordset
    Set rsProduit = New ADODB.Recordset
    
    strSQL2 = "SELECT DISTINCT [Rectification cylindre_travail].[N° du cylindre], [Rectification cylindre_travail].[position montage] FROM [Rectification cylindre_travail]"
    strSQL2 = strSQL2 & " WHERE ((([Rectification cylindre_travail].[N° du cylindre]) like """ & Texte0.Value & """));"
    CurrentDb().QueryDefs("pos cyl").SQL = strSQL2
    
    rsProduit.Open "SELECT [position montage] FROM [pos cyl]", CurrentProject.Connection
    
    If rsProduit = inf Then
            strsql = docmd.openQuery "Requete1"
            
        Else
        
            strsql = docmd.openQuery "Requete2"
    End if
        
    Set rsProduit = Nothing
    rsProduit.Close
    
    End Sub
    la ligne en gras, c'est cette ligne qui est selectionner tout le temps apres la compilation, et il ya un curseur jaune sur la premiere ligne: "Private Sub Commande4_Click()".
    je sais pas quoi faire!!!
    merci encore d'avance

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Ces commandes indiquent que vous voulez vous connecter à une autre base, mais il manque les infos de connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rsProduit As ADODB.Recordset
    Set rsProduit = New ADODB.Recordset
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    et que doit-je mettre et ou je dois les mettre svp, ca fais juste un jour que je fais du vba, alors je ne m'y connais pas du tout!!
    parceque la je n'ai pas envi de changer de base de donnée, je n'ai qu'une base et j'ai envi de rester que sur la base courante!!!

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Tes tables sont-elles attachées dans ta base ! Si c'est le cas, tu n'as pas besoin de ces lignes.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    oui effectivement, j'ai défini quelques relations entre mes tables.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    je viens d'enlever les deux lignes en questions, et je recoit un message du type:
    "erreur d'execution 424, objer requis"
    et le curseur pointe sur la ligne 10 : ""rsProduit.Open "SELECT [position montage] FROM [pos cyl]", CurrentProject.Connection""

  11. #11
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Pouvez-vous mettre un MSGBOX strSQL2 avant la ligne 10 ? Et voir le message qui apparaît !
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Du coup dans mon formulaire qui ressemble a ceci: Nom : Capture.PNG
Affichages : 132
Taille : 5,4 Ko quand je tape 11 dans le textbox, je recois ce message: Nom : Capture1.PNG
Affichages : 129
Taille : 11,0 Ko

  13. #13
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Cela ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    strSQL2 = "SELECT DISTINCT [Rectification cylindre_travail].[N° du cylindre], [Rectification cylindre_travail].[position montage] FROM [Rectification cylindre_travail]"
    strSQL2 = strSQL2 & " WHERE ((([Rectification cylindre_travail].[N° du cylindre]) like '" & Texte0.Value & "*'));"
    Msgbox strSQL2
    CurrentDb().QueryDefs("pos cyl").SQL = strSQL2
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    même en faisant cela, ca me renvoie la même chose!!

  15. #15
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    La requête "pos cyl" n'est pas ouverte ou utilisée par un formulaire
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    La requête "pos cyl" est utilisée par mon formulaire1:
    Nom : Capture.PNG
Affichages : 121
Taille : 5,4 Ko
    en fait quand je tape le numéro d'un cylindre dans le Textbox, bah la requête "pos cyl" est censé me mettre la numero de ce cylindre+ sa position de montage, comme ceci:

    Nom : Capture3.PNG
Affichages : 131
Taille : 9,0 Ko

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    enfin, en supposant qu'on a taper le numéro 12 dans le formulaire

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    au niveau de mon code, vu que j'ai enlever ces deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim rsProduit As ADODB.Recordset
    Set rsProduit = New ADODB.Recordset
    alors,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    rsProduit.Open "SELECT [position montage] FROM [pos cyl]", CurrentProject.Connection
     
    If rsProduit = inf Then
            strsql = CurrentDb().QueryDefs("Historique cylindre_travail inf")
     
        Else
     
            strsql = CurrentDb().QueryDefs("Historique cylindre_travail sup")
    End If
     
    Set rsProduit = Nothing
    rsProduit.Close
    toutes les lignes où il y a rsPreoduit vont causer problème vu que rsProduit ne sera plus declarer!!

  19. #19
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Je ne comprends plus ce que vous voulez faire

    Pouvez-vous décrire votre mode opératoire ?
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    J'ai deux requêtes:
    -"Historique cylindre inf"
    -"Historique cylindre sup"
    j'ai une table "Rectification de cylindre" qui est composé de plusieurs champs dont:
    • N°cylindre
    • position Montage

    Et j'ai mon formulaire: "formulaire1" et une requête "pos cyl". le textbox du formulaire1 est associé au N° du cylindre, et selon le numéro du cylindre qu'on entre dans notre textbox, la requête "pos cyl" s'execute en affichant le numéro du cylindre(type Numerique) et la position du montage(type liste de choix: inf ou sup).
    et c'est a ce moment que le VBA interviens, si la position du montage = "inf" je veux que la requête "Historique cylindre inf" sinon executer la requête "Historique cylindre sup"
    je sais pas si j'ai été assez claire

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Somme sur conditions imbriquée dans une requête
    Par aleximan dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/01/2008, 18h05
  2. Condition logique sur une requête
    Par NiKoS29 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 25/07/2007, 15h40
  3. Condition sur une requête
    Par Dimitri_87 dans le forum SQL
    Réponses: 1
    Dernier message: 03/04/2007, 18h07
  4. Cherche la bonne condition sur une requête
    Par Tchupacabra dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/11/2006, 14h52
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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