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

Bases de données Delphi Discussion :

filtrage BDD paradox7


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Points : 304
    Points
    304
    Par défaut filtrage BDD paradox7
    Salut a tous,

    voila j'ai une base de données paradox7 dans laquelle se trouve un champ où des mots clés sont entrés ( plusieurs mots dans le même champ ).
    Je dois filtrer les entrées de ma base en fonction de mot entrés par l'utilisateur. Le problème c'est que le filtre ne prend en compte que le premier mot de mon champs et pas les suivants.

    Un morceau de code est plus parlant que des mots:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Table.Filter := 'Commentaire =''' + Edit_Filter.Text + '*'''; // Mise en place du filtre agissant sur le champ  "Commentaire de ma bdd"
    Table.Filtered := true; // Activation du filtre
    Si quelqu'un peut me dire comment faire pour que le filtre soit étendu sur les autres mots sachant qu'il me sera très difficile d'agir sur la structure de ma bdd.

    Cordialement.

  2. #2
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 936
    Points
    3 936
    Par défaut
    Salut

    En lieu et place de la propriété Filter, emploie l'événement OnFilterRecord (+F1), c'est plus souple et cela te permettra de faire des calculs plus sophistiqués.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Points : 304
    Points
    304
    Par défaut
    Merci de ta réponse e-ric,

    il est vrai que OnFilterRecord est apparement plus souple mais ca ne regle pas mon problème. A savoir trouver une chaine de caractère même si elle ne se trouve pas en début de champ.

    encore merci.

    cordialement.

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 936
    Points
    3 936
    Par défaut
    Eh bien alors !!

    Il suffit de rechercher le mot clé à l'aide d'un appel à la fonction Pos dans la valeur de ton commentaire, c'est simple mais cela devrait suffire, non ?

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Table.Filter := 'Commentaire =*''' + Edit_Filter.Text + '*''';
    Avec * en plus devant l'edit_filter ca devrait fonctionner, ca te permettra d'avoir toutes les lignes contenant le mot définit par Edit_filter
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Points : 304
    Points
    304
    Par défaut
    Premier test de ce matin me donne une erreur pour ta solution Malatar. en fait il y avait une erreur de syntaxe pour que la chaine soit correcte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Table.Filter := 'Commentaire =''*' + Edit_Filter.Text + '*''';
    mais même ainsi ca ne marche pas. Je pense que le caractère '*' ne sert de générique que pour les caractères suivants et pas les précédents, mais merci quand même.

    Je vais essayer le OnFilterRecord avec la fonction Pos à l'intérieure.

    Cordialement.

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Moi ca fonctionne parfaitement chez moi, mais bon , j'ai pas le meme type de base de données (MYSQL) et surement pas le meme type de composants (MyDAC)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Table.Filtered := false;
    Table.Filter := 'Commentaire =' +  QuotedStr('*' + Edit_Filter.Text + '*'); 
    Table.Filtered := true;
    Essaie comme ci dessus, c'est plus propre avec un quotedstr.

    Sinon dans les Filtersoptions de ta table, tu as pensé à mettre foCaseInsensitive à true ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Points : 304
    Points
    304
    Par défaut
    non désolé ca ne marche pas plus. Mais je ne perd pas espoir.

    Cordialement.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Points : 304
    Points
    304
    Par défaut
    ALLELUïA!!!!

    Ca marche!!!

    En fait je n'avais pas eu le temps de tester le OnFilter Record avec la Fonction Pos() mais je viens de tester et ça fonctionne.


    Encore merci à toi e-ric ainsi qu'à Malatar.

    cordialement.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/02/2011, 02h43
  2. portabilité et BDD
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/07/2002, 10h59
  3. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  4. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

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