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 :

Problème de requète SQL dans un Requery


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Par défaut Problème de requète SQL dans un Requery
    Bonjour à toutes et à tous,

    Je suis un novice dans le métier de développeur de base de données, ceci est ma deuxième base Ms-Access seulement...

    Voici mes tables :
    - Tbleagent (Idagent, Nom, Prénom, etc...)
    - Tbletechnique (Idtechnique, Idagent, Date, Intitulé, Note)

    Sur mon formulaire de recherche, via un menu déroulant je récupère un intitulé puis une note . Le problème survient lorsque je dois passer les paramàtres récupérés dans les variables de la requète. Le compilateur marque en jaune la ligne de code que j'ai mis en gras ici.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub Selection_filtre()
     
        Dim Db As Database
        Dim qdf As QueryDef
        Dim rst As Recordset
        Dim requête As String
        Dim Intitulé As String
        Dim Valeur As Integer
        Dim Filtre As String
     
        Intitulé = ""
        Valeur = 0
     
        If (Me.Modifiable1.Value <> "") And (Me.Modifiable2.Value <> "") Then
            Intitulé = Me.Modifiable1.Value
            Valeur = Me.Modifiable2.Value
            requête = "SELECT DISTINCT Tbleagent.Nom, " & " Tbleagent.Prénom, " & " (Tbletechnique.[" & Intitulé & "])" & _
              "FROM Tbleagent INNER JOIN Tbletechnique ON Tbleagent.Idagent = Tbletechnique.Idagent" & _
              "WHERE ((Tbletechnique.[" & Intitulé & "] >= (" & (Valeur) & ")));"
        End If
     
        Set Db = CurrentDb
        Set qdf = Db.CreateQueryDef("")
        [b]qdf.sql = requête[/b]
        Set rst = qdf.OpenRecordset
     
        Do While Not rst.EOF
           Filtre = Filtre & "Idagent = " & rst.Fields("Idagent").Value & " OR"
           rst.MoveNext
        Loop
     
        If Filtre <> "" Then
            Filtre = Left(Filtre, Len(Filtre) - 4)
            Me.Frmreq5.Form.Filter = Filtre
            Me.Frmreq5.Form.FilterOn = True
        Else
            Me.Frmreq5.Form.FilterOn = False
        End If
     
        rst.Close
        Set qdf = Nothing
        Set Db = Nothing
     
    End Sub
    Modifiable1 = champ liste déroulante pour récupérer l'intitulé
    Modifiable2 = champ liste déroulante pour récupérer l'a note

    Merci par avance de votre aide et merci au créateurs de ce forum qui m'a déjà apporté beaucoup de réponse sans que je pose de question...

  2. #2
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Bienvenu sur ce forum, tu pourais éditer ton post et mettre le code dans les balises [code] s'il te plait. Merci.

  3. #3
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Essaye avec ceci. J'ai remplacé ton bloc de 4 lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Db = CurrentDb 
    Set rst = db.OpenRecordset(sql)
    La variable Qdf ne te sert à rien dans ton cas.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Par défaut
    Merci Tofalu !

    Mais malheureusement cela ne marche pas plus... Desolé par contre pour le code, erreur de débutant...

  5. #5
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Oui excuse moi, j'ai mal recopié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Db = CurrentDb 
    Set rst = db.OpenRecordset(requete)
    Si ça marche toujours pas, quel est le message d'erreur ?

  6. #6
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Par défaut
    Voici le message d'erreur :

    ERREUR d'execution '3085'
    Undefined function Tbletechnique.Idagent WHERE in expression

    Par contre tu as raison, pour le qdf, il ne sert à rien d'en créer un ! merci !

  7. #7
    Membre expérimenté
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Par défaut
    Citation Envoyé par Keracces
    Voici le message d'erreur :

    ERREUR d'execution '3085'
    Undefined function Tbletechnique.Idagent WHERE in expression

    Par contre tu as raison, pour le qdf, il ne sert à rien d'en créer un ! merci !
    Salut, aux vues de ton message d'erreur et du code, tu n'as pas du copier correctement le message d'erreur.

    D'après ton code, tu n'as pas d'espace entre "Tbletechnique.Idagent" et "WHERE". Corrige déjà ceci et retente l'exécution.

    Bon courage

  8. #8
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 33
    Par défaut
    Et voilà ! J'ai trouvé la solution... En partie grace à vous, et je vous en remercie beaucoup !
    Voilà le code :

    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
    ...
    If (Me.Modifiable1.Value <> "") Then
            Intitulé = Me.Modifiable1.Value
            Valeur = Me.Modifiable2.Value
            requête = "SELECT DISTINCT Tbletechnique.Idagent" & " " & _
                      "FROM Tbletechnique " & " " & _
                      "WHERE Tbletechnique.[" & Intitulé & "] >= " & Valeur & ";"
        End If
     
        Set Db = CurrentDb
        Set rst = Db.OpenRecordset(requête)
     
        Do While Not rst.EOF
           Filtre = Filtre & "Tbletechnique.Idagent = " & rst.Fields("Idagent").Value & " OR "
           rst.MoveNext
        Loop
     
     
        If Filtre <> "" Then
            Filtre = Left(Filtre, Len(Filtre) - 4)
            Me.Frmreq5.Form.Filter = Filtre
            Me.Frmreq5.Form.FilterOn = True
        Else
            Me.Frmreq5.Form.FilterOn = False
        End If
    ...
    A bientôt et merci encore !

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

Discussions similaires

  1. Problème de requête SQL dans une boucle While
    Par Astraya dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/01/2009, 17h18
  2. Problème avec requête SQL dans VBA
    Par Mimisio dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/07/2007, 11h00
  3. [AJAX] requète sql dans js
    Par cheers94wow dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 13h24
  4. [MySQL] Problème de requêtes SQL dans un script
    Par Nefret dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/09/2005, 15h08

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