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

C++Builder Discussion :

Les filtre ADO n'aime pas les espaces


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 81
    Points
    81
    Par défaut Les filtre ADO n'aime pas les espaces
    Bonjour à tous!

    Encore moi,

    Bon je suis en train de travailler avec des composantes ADO (Connection et Query) ainsi qu'un DBGrid et je cherche à filtrer plusieurs champs à la fois. Cela fonctionne très bien, mais il semble avoir un problème avec les espaces. Je commence par 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
    void __fastcall TForm2::ID_FiltreKeyUp(TObject *Sender, WORD &Key,
    	  TShiftState Shift)
    {
    	AnsiString filter;
     
    	if(ID_Filtre->Text != "")
    	{
    		filter = "Job_ID LIKE %" + ID_Filtre->Text + "%";
    		ADOQuery->Filter = filter;
    		ADOQuery->Filtered = true;
    	}
    	if(Client_Filtre->Text != "")
    	{
    		if(filter != "")
    			filter += " and ";
    		filter += "Customer_Company LIKE %" + Client_Filtre->Text + "%";
    		ADOQuery->Filter = filter;
    		ADOQuery->Filtered = true;
    	}
    	if(Client_Filtre->Text == "" && ID_Filtre->Text == "")
    	{
    		ADOQuery->Filtered = false;
     
    	}
    }
    Lorsque j'entre dans ma boite de texte 'ID_Filtre', le filtre s'applique correctement, tout comme si j'entre du texte dans l'autre boite 'Client_Filtre'. Seulement, si la valeur que je tente de retrouver est disons "Antoine Lac", le message d'erreur suivant appraît lorsque j'enfonce la barre d'espace :

    "Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres."

    Ce qui m'a surpris en premier lieu, c'est la langue de l'erreur. Mon BCB est en anglais et normalement les message d'erreur sont en anglais ce qui me laisse croire que c'est un problème au point de vue d'Acces (qui est en français).

    J'ai faites quelques recherches et je n'ai pas trouver d'information à ce sujet.

    Merci de votre intérêt,

    Antoine

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut,
    a mon avis ton problème vient de ta requete, comme tu n'as pas mis les valeur de tes champs entre guillemet, il prend cela pour plusieurs champs, il faut donc ajouter les guillemets, un avant le premier % et un apres le deuxième % :
    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
    void __fastcall TForm2::ID_FiltreKeyUp(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
        AnsiString filter;
     
        if(ID_Filtre->Text != "")
        {
            filter = "Job_ID LIKE '%" + ID_Filtre->Text + "%'";
            ADOQuery->Filter = filter;
            ADOQuery->Filtered = true;
        }
        if(Client_Filtre->Text != "")
        {
            if(filter != "")
                filter += " and ";
            filter += "Customer_Company LIKE '%" + Client_Filtre->Text + "%'";
            ADOQuery->Filter = filter;
            ADOQuery->Filtered = true;
        }
        if(Client_Filtre->Text == "" && ID_Filtre->Text == "")
        {
            ADOQuery->Filtered = false;
     
        }
    }

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 81
    Points
    81
    Par défaut Impécable!
    C'était effectivement une question de '

    Tout fonctionne!!

    Merci!

    Antoine

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Attention à ne pas avoir de guillemets dans le texte retourné par "Client_Filtre->Text"

  5. #5
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui, ou plutôt, il faut les gérer, c'est a dire qu'il faut que tu double chaque guillemet rencontré dans ton champs text

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

Discussions similaires

  1. Le filtre ADO ne support pas les espaces
    Par unja2010 dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/06/2013, 12h23
  2. Strtok n'aime pas les espaces
    Par dogua dans le forum Linux
    Réponses: 2
    Dernier message: 24/02/2009, 17h57
  3. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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