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 :

ADOTable->Filter = erreur


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut ADOTable->Filter = erreur
    Salut,

    J'ai fait un ans sans programer, et j'ai l'impresion que j'ai perdu sertain automatisme.

    J'ai un conposent ADOTable, et mon programe en modifie la propiétés Filter, en fonction de CheckBox coché et du contenu d'un Edit.

    Une de mes ligne (contenue dans un if pour verivier le CheckBox) ne marche pas, la voisi (F_CHIMIE est le nom de mon ADOTable):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F_CHIMIE->Filter="QUANTITE > 0 AND (INDEX_ LIKE '%"+ Edit1->Text + "%' OR SYN1 LIKE '%"+ Edit1->Text + "%' OR SYN2 LIKE '%"+ Edit1->Text + "%')" ;
    La ligne marche sans les ( ) mais ne me donne pas le résulta voulu.
    Avec les ( ) le programe plante à l'execution lorsqu'il execute cette ligne. avec comme message : "Le projet a provoqué une classe d'exception EOLeException avec le message 'les arguments sont de type incorrecte, en dehors des limites autorisées ou en conflit les uns avec les autre'....

    Ou se trouve mon erreur???

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    J'ai l'inpression que personne ne trouve de solution à mon probléme... Il n'y aurait t'il pas moyen de le controurné facilement allor???

    Pour étre claire, je voudrai que mon programme affiche dans un DBGrip tous les produis non vide (QUANTITE > 0) dons le nom (INDEX_), ou un des synonime (SYN1,2) contiéne au moins l'expresion contenu dans mon Edit.

    ???

    Merci

  3. #3
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Pour moi ce serai plus une erreur de syntaxe SQL, car les parenthèse concerne la requête SQL

  4. #4
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    [quote=fpascal;2641279]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F_CHIMIE->Filter="QUANTITE > 0 AND (INDEX_ LIKE '%"+ Edit1->Text + "%' OR SYN1 LIKE '%"+ Edit1->Text + "%' OR SYN2 LIKE '%"+ Edit1->Text + "%')" ;
    [quote]

    Ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    F_CHIMIE->Filtred = true ;
    ça devrais marché.

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    Le filtered et bien dejat mi à true, vu que mes autre filtre marche bien.
    Je vous remet le code dans son contexte pour vous mieu comprendre se que je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TRechercheNom::Edit1Change(TObject *Sender)
    {
    if((CheckBox1->Checked==true)&&(Edit1->Text!="")) 
    appel->F_CHIMIE->Filter="QUANTITE > 0 AND (INDEX_ LIKE '%"+ Edit1->Text + "%' OR SYN1 LIKE '%"+ Edit1->Text + "%' OR SYN2 LIKE '%"+ Edit1->Text + "%')" ;
    if((CheckBox1->Checked==false)&&(Edit1->Text!=""))
    appel->F_CHIMIE->Filter="INDEX_ LIKE '%"+ Edit1->Text + "%' OR SYN1 LIKE '%"+ Edit1->Text + "%' OR SYN2 LIKE '%"+ Edit1->Text + "%'" ;
    if((CheckBox1->Checked==true)&&(Edit1->Text==""))
    appel->F_CHIMIE->Filter="QUANTITE > 0" ;
    if((CheckBox1->Checked==false)&&(Edit1->Text==""))
    appel->F_CHIMIE->Filter="" ;
    }
    Seul l'execution de la ligne du premier if pause probléme, les autre marche parfaitement.

  6. #6
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Essaye de voir ce que vaut exactement Filter lorsque ce produit l'erreur, il se peut qu'un morceaux de tes chaines de caractère ne soit pas passé dedans, si tu veut être sur que tout passe bien, tu enregistre tes chaine dans un AnsiString intermédiaire que tu envoie ensuite a Filter, comme ça tu pourra voir plus facilement ce que vaut l'AnsiString en mode debug.

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    J'ai déjat penser à sa, et fait quelque test. Mais aucun probléme la.

    Je vien par contre d'eseyer de métre une requéte similaire directement dans l'ADOTable avec des parenthése dedans. Elle est directement refusée.

    Comme tu le diser, pottiez, l'erreur doit venir de la requéte SQL qui et considerait comme invalide.
    Pourquoid????

  8. #8
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Essaye de poster ta requête dans le forum SQL en exposant ton problème, il pourront t'aider a trouver ton erreur de syntaxe

  9. #9
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Bonjour,
    Essaye d'utiliser plus de parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "(QUANTITE > 0) AND ((INDEX_ LIKE '%"+ Edit1->Text + "%') OR (SYN1 LIKE '%"+ Edit1->Text + "%') OR (SYN2 LIKE '%"+ Edit1->Text + "%'))"

  10. #10
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Ah, sinon affiche le message d'erreur pour voir un peut plus.

  11. #11
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    Marche pas kmaniche.

    Pour le message d'erreur je l'ai dejat mis :
    "Le projet a provoqué une classe d'exception EOLeException avec le message 'les arguments sont de type incorrecte, en dehors des limites autorisées ou en conflit les uns avec les autre"

  12. #12
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Re,

    Peux-tu nous montrer les type de chaque champ de la table F_CHIMIE.

  13. #13
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par kmaniche Voir le message
    Re,

    Peux-tu nous montrer les type de chaque champ de la table F_CHIMIE.
    Tu soupconnes des plants transgéniques ?

  14. #14
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    INDEX_ , SYN1, SYN2 sont de type Texte
    QUANTITE de type Numérique.

    Je ne pense pas que sa viéne du type des champs, vue que la ligne marche sans les ( ).

  15. #15
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    Je devrait peut étre presicer que :
    La BD est sous Ms Access.
    La connexion entre le programme et la BD se fait via "Microsoft Jet OLEDB 4.0".

  16. #16
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    comme proposait j'ai poser la question dans le forum SQL : http://www.developpez.net/forums/sho...d.php?t=441042

    Pour eu, la syntax sql de la ligne à l'aire bonne.

    Je ne sais plus quoid faire. Une idée svp????

  17. #17
    Membre éclairé Avatar de devlopassion
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2006
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Août 2006
    Messages : 576
    Par défaut
    bonjour,
    -je sui pas un grand expert mais je pense que la syntaxe SQL est juste pas d'erreur dans l'expression.
    -mais je pense que tu ne peut pas fair ce genre de filtre avec les composant ADO.
    -je te propose donc d'utilisé les table BDE ça marche tres bien avec le filtre
    bonne chance

  18. #18
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Bon je reviens, mais pas pour une blague foireuse cette fois ci ...
    Juste une question qui pourrait nous orienter vers une solution:
    N'as tu pas par hasard un composant 'orienté donnée' qui afficherait les données de cette table ? Car dans ce cas, avec de la chance (et en toute bonne logique pour moi), tu as un TDataSource entre les deux et la - dans ce cas - passes ton filtre au travers de cet objet.
    Qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TDataSource->Dataset->filtered = false;
    TDataSource->Dataset->filter = "ton_filtre_compliqué_mais_sans_erreurs";
    TDataSource->Dataset->filtered = true;
    D'ailleurs, si j'avais du utiliser des composants ADO et avoir eu besoin de filtre, j'aurais très certainement cherché a utiliser TAdoDataset, qui regroupe pas mal de capacités/possibilités.
    Ceci n'étant pas forcement une reflexion très scientifique, mais qui aurait peut être le mérite de devoir être envisagé.

    En espérant t'aider,
    @+

  19. #19
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Je ne suis pas un specialiste de la base de donnees mais j'ai trouve ceci dans la FAQ Delphi qui peut te donner une autre oriantation

  20. #20
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Citation Envoyé par Sunchaser Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TDataSource->Dataset->filtered = false;
    TDataSource->Dataset->filter = "ton_filtre_compliqué_mais_sans_erreurs";
    TDataSource->Dataset->filtered = true;
    Ce que Sunchaser a dis, est juste, j'utilise le même procédé pour le filtrage des données.

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

Discussions similaires

  1. erreur de filter
    Par root76 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 14/02/2009, 17h04
  2. Filter et champ, ou est donc l'erreur
    Par x0249 dans le forum IHM
    Réponses: 1
    Dernier message: 23/05/2007, 06h21
  3. [C# 2.0] Pourquoi ai-je une erreur à l'exécution d'un Filter Databind ?
    Par diaboloche dans le forum Accès aux données
    Réponses: 5
    Dernier message: 24/06/2006, 18h57
  4. Filter erreur
    Par ouldfella dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/04/2006, 22h31
  5. Erreur de connection avec une ADOTable
    Par Sunchaser dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/03/2006, 18h03

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