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 :

Erreur lors d'appel à une requete dans une formulaire de recherche multi-critère


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut Erreur lors d'appel à une requete dans une formulaire de recherche multi-critère
    Bonjour tout le monde!

    J'ai un petit soucis, j'ai un formulaire contenant 6 critères possibles. Sur clique d'un bouton validation j'ai ecrit un code(merci à caféine) qui vérifie si les champs sont remplis et quand c'est le cas qui rajoute le critère dans une requete SQL.
    Jusque la tout va bien, j'ai mit des points d'arret et tout a l'air de marcher parfaitement pour la création de la requete :
    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
    Dim SQL As String
    Dim SQLWHERE As String
     
    SQL = "SELECT * from TClient where NomClient <> 0 "
    If IsNull(Me.NomClient) Then
    Else
    SQL = SQL & "And FClientConsultation!NomClient = '" & Me.NomClient & "' "
    End If
    If IsNull(Me.NomAgence) Then
    Else
    SQL = SQL & "And FClientConsultation!NomAgence = '" & Me.NomAgence & "' "
    End If
    If IsNull(Me.CodeNAFouAPE) Then
    Else
    SQL = SQL & "And FClientConsultation!CodeNAFouAPE = '" & Me.CodeNAFouAPE & "' "
    End If
    If IsNull(Me.StatutClient) Then
    Else
    SQL = SQL & "And FClientConsultation!StatutClient = '" & Me.StatutClient & "' "
    End If
    If IsNull(Me.CodeClient) Then
    Else
    SQL = SQL & "And FClientConsultation!CodeClient = '" & Me.CodeClient & "' "
    End If
    SQL = SQL & ";"
    SQLWHERE = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    C'est au moment de l'ouverture du formulaire lié a la table TClient que je veut trier que j'ai une erreur "d'execution" :
    "erreur de syntaxe dans l'expression 'NomClient <> 0 And FClientConsultation!NomAgence = 'ADECCO' And FClientConsultation!StatutClient ='Client' ;'
    Cette erreur se produit à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "FClientConsultation", , , SQLWHERE, acFormPropertySettings
    Pour completer mes explications : le formulaire de recherche se nomme FFiltrageClient et le formulaire que je souhaite ouvrir se nomme FClientConsultation.

    Je n'arrive pas a voir mon erreur et je sollicite donc votre aide, merci d'avance.

    Deglingo

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    à priori je dirais que c'est le point-virgule qui dérange

    tu as inversé les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQLWHERE = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    merci pour ta réponse, malheuresement je suis maintenant confronté à un nouveau problème, toujours à la meme ligne mais cette fois le message est le suivant : "Laction OpenForm a été annulée"
    Si je fait le test en ne remplissant que le champs "NomClient" il me demande la valeur du paramètre FClientConsultation!NomClient avant de me lancer l'image d'erreur.
    J'ai donc essayé de supprimer "FClientConsultation!" devant le NomClient de cette ligne :
    SQL = SQL & "And NomClient = '" & Me.NomClient & "' "
    mais j'ai toujours la même erreur :/

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    A priori les FClientConsultation sont tous de trop.
    Ils n'ont rien à faire dans la requête, si tu veux tu peux mettre le nom de la table (ce qui n'est pas nécessaire ici vu qu'il n'y a qu'une seule table dans la requête) mais pas le nom du formulaire.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Oui c'est ce que j'avais commencé a faire mais j'avais toujours la même erreur, en fait j'ai trouvé le problème!
    pour information c'etait dû à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT * from TClient where NomClient <> 0 "
    J'ai juste changé le NomClient par NumClient et ca marche !! En fait je crois que c'est le double filtre sur le même champs qui lui plaisait pas : p
    Je remet le code une derniere fois avec tout bien au cas ou ca interesse quelqu'un :

    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
    Dim SQL As String
    Dim SQLWHERE As String
    SQL = "SELECT * from TClient where NumClient <> 0 "
    If IsNull(Me.NomClient) Then
    Else
    SQL = SQL & "And NomClient = '" & Me.NomClient & "' "
    End If
    If IsNull(Me.NomAgence) Then
    Else
    SQL = SQL & "And NomAgence = '" & Me.NomAgence & "' "
    End If
    If IsNull(Me.CodeNAFouAPE) Then
    Else
    SQL = SQL & "And CodeNAFouAPE = '" & Me.CodeNAFouAPE & "' "
    End If
    If IsNull(Me.StatutClient) Then
    Else
    SQL = SQL & "And StatutClient = '" & Me.StatutClient & "' "
    End If
    If IsNull(Me.CodeClient) Then
    Else
    SQL = SQL & "And CodeClient = '" & Me.CodeClient & "' "
    End If
    SQLWHERE = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
    DoCmd.OpenForm "FClientConsultation", , , SQLWHERE, acFormPropertySettings
    merci arkham

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    tu peux quand même faire deux filtres sur un même champ...

    c'était sûrement que nomclient est une chaîne de caractère et que tu la comparait à un nombre

    sinon pour simplifier peut-être la lecture du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If IsNull(Me.NomClient) Then
    Else
    SQL = SQL & "And NomClient = '" & Me.NomClient & "' "
    End If
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not IsNull(Me.NomClient) Then
    SQL = SQL & "And NomClient = '" & Me.NomClient & "' "
    End If
    ça me fait toujours bizarre quand je vois des "Else" pour trouver la condition inverse...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Tu doit avoir raison j'avais pas fait atention au type de champs.
    merci pour le Not IsNull c'est vrai que j'y pense pas, mais faut dire, ca me fait autant bizzare de le voir comment je l'ecrit que de voir un If sans Else

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

Discussions similaires

  1. [OpenOffice][Base de données] Somme dans une requete dans un formulaire.
    Par DakM dans le forum OpenOffice & LibreOffice
    Réponses: 7
    Dernier message: 09/04/2014, 07h27
  2. [MySQL] requete dans une table avec une varible d'une autre table
    Par kogoi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/11/2011, 15h24
  3. Réponses: 2
    Dernier message: 24/10/2011, 17h15
  4. [MySQL] une requete dans une requete
    Par ots2 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/08/2011, 09h49
  5. Utilisation d'une requete dans une requete update
    Par hellbilly dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2005, 15h09

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