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 :

Requête à plusieurs critères (AND/UNION) et problème [AC-2016]


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2022
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2022
    Messages : 24
    Points : 26
    Points
    26
    Par défaut Requête à plusieurs critères (AND/UNION) et problème
    Bonjour à toutes et tous,
    Le problème d'aujourd'hui concerne le fonctionnement d'une fusion de requêtes SELECT qui pose problème. Un message d'erreur apparaît, m'indiquant qu'il manque un paramètre.
    Voici mon code :

    Dim db As DAO.Database
    Dim strSQL As String
    Dim strTamp As String
    Set db = CurrentDb
    Dim result As DAO.Recordset

    strTamp = Me.Liste27.Value
    strSQL = "Select * From Pannes Where Id_Panne= strTamp And Historique_mail=" & 1
    'strReq = "Select * From Pannes Where Historique_mail=" & 1
    set result = db.OpenRecordset(strSQL,4 ,512)
    MsgBox (result)


    Je souhaite ici faire une requête SELECT avec plusieurs critères WHERE. Comme ce n'est pas possible, j'ai trouvé après recherches la solution du UNION, ou encore du AND.
    Dans mon exemple j'essaye donc le AND en faisant la synthèse de deux requête dont la seconde est en commentaire dans le code.
    Concrètement, j'essaye de récupérer la panne de la table Pannes ayant pour id de panne l'Id_Panne sélectionné dans une zone de liste intitulée Liste27, et dont l'Historique_mail est égal à 1.

    Mes questions : la syntaxe de ma requête est-elle correcte ? Si non, pouvez-vous m'aiguiller ? Et pour finir, j'ai reçu de l'aide récemment pour cette ligne : set result = db.OpenRecordset(strSQL,4 ,512) . Pourquoi le 4 et le 512 en paramètre ? S'agit -il de la taille maximale de là cette requête ?

    En vous remerciant par avance,

  2. #2
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut,
    Peut-être devriez-vous commencer par lire certains tutos présents dans la FAQ Access pour comprendre la syntaxe SQL avec ou sans critères unique ou multiple.
    strTamp semble être une variable d'un objet formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "Select * From Pannes Where Id_Panne = " & Me.strTamp & " And Historique_mail = 1"
    Et pour OpenRecordset() lire ceci

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2022
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2022
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    Bonsoir,

    Très bien merci pour votre aide.
    Je vais faire un petit tour sur la syntaxe des requêtes oui. C'est une des choses qui me pose problème.
    Merci
    Bonne soirée

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2022
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2022
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    Aussi, strTamp est plutôt la variable qui stock la réponse d'un formulaire. Ou même la saisie pour être plus exacte.

    MAJ : je peux en profiter pour vous demander comment tester une requête ?

  5. #5
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Après votre syntaxe SQL ajoutez
    Debug.Print strSQL. Pensez à ouvrir la fenêtre d'exécution Ctrl G.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2022
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2022
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par hyperion13 Voir le message
    Après votre syntaxe SQL ajoutez
    Debug.Print strSQL. Pensez à ouvrir la fenêtre d'exécution Ctrl G.
    Bonjour,

    en fait, je m'échauffe le crâne. J'essaye de faire tester le résultat d'une requête car parfois elle ne renvoie rien. Dans ce cas précis, mon programme plante. Tout simplement parce que je récupère la valeur de la requête dans une variable et celle-ci est vide.

    C'est la raison pour laquelle je souhaite la tester.

  7. #7
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    généralement pour tester si un recordset (rst) est vide.
    Lire ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set rst = dbs.OpenRecordset(strSql, dbOpenDynaset)
    If rst.RecordCount = 0 Then Exit Sub
    Que signifie Historique_mail = " & 1?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2022
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2022
    Messages : 24
    Points : 26
    Points
    26
    Par défaut
    Bonsoir Hyperion13.

    Merci, c'est exactement ce dont j'avais besoin.
    J'ai effectué une recherche via ton lien pour le openrecordset. J'ai donc compris la raison du 4 et du 512 comme paramètres. C'est encore un peu délicat pour comprendre les différentes utilités de chaque paramètre mais c'est un mystère en moins. Merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/11/2011, 16h36
  2. Réponses: 4
    Dernier message: 07/06/2008, 12h06
  3. requête SQL avec plusieurs critères de sélection
    Par gailup dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/06/2007, 08h44
  4. Envoyer plusieurs critères dans une requête ?
    Par olivierc25 dans le forum Access
    Réponses: 4
    Dernier message: 20/03/2007, 15h13
  5. Réponses: 4
    Dernier message: 26/04/2006, 14h02

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