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 :

Débutant : Filtre dans un base de donnée access.


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut Filtre dans un base de donnée access.
    Salut a tous,

    J'ai une basé de donnée access que j'affiche dans un Dbgrid.
    j'utilise les composantes Adoconnection, Adotable et Datasource.

    Je veut faire un filtre dans la table et que mon dbgrid affiche TOUT les résultats contenant la chaine de charactère demandé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    adotable.Filter := 'Villes = ' + QuotedStr(edit1.text);
    adotable.Filtered := true;
    Le programme affiche seulement la ligne dont jai entré le nom exactement comment il est écrit dans la table. Si j'utilise une chaine de charactère partiel il retourne rien. je veux par exemple demandé : 'ST' et que le programme me retourne toutes le villes contenant la chaine 'ST'.

    Merci!!

  2. #2
    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
    adotable.Filter := 'Villes = ' + QuotedStr('*' + edit1.text + '*');
    adotable.Filtered := true;
    Correction dans le code
    Modérateur Delphi

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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    Merci, Mais ca ne fonctionne pas, peut-importe ce que j'écris dans edit1
    le programme me retourne aucun enregistrement

    Brain3d

  4. #4
    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
    Le filter est sensible à la casse, donc si tu cherches 'ST' et qu'il n'existe pas dans la base de données, il ne te le trouvera pas.
    Sinon comment tu mets à jours le filtre ? sur le onchange du TEdit ou par un bouton ?
    Modérateur Delphi

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

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    J'écris tel que c'est ecris dans ma table et il ne retourne rien,

    Je met a jour le filtre en cliquant sur un bouton.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 67
    Points
    67
    Par défaut
    En principe, le filtre d'ado ne permet pas de caractère générique. Les autres composants peuvent spécifié la propriété filteroption à "loPartialKey". Pour ado, je te proposerai de tout mettre dans une requête et d'exécuter ta requête avec un paramètre.

  7. #7
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    essai de désactiver le filtrer avant de faire le filtre,
    parce que le filtrer et appliquer a la table qui est déja filtrer .

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    Aityahia, J'ai essayer et ca ne fonctionne pas...

    Digital Prophecy,

    ''Je te proposerai de tout mettre dans une requête et d'exécuter ta requête avec un paramètre''

    Comment je fait ca? Désolé je suis vraiment débutant, Dans ce jai fait
    j'ai jamais eu a utilisé de requête Sql... Peut-être me suggérer un piste pour y arrivé ?

    Merci

  9. #9
    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
    Quel version de delphi utilises tu ?
    Modérateur Delphi

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

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    Delphi 7

  11. #11
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Points : 165
    Points
    165
    Par défaut
    1- Il faut libérer la table ---> table.filtered:=false
    2- saisir le filtre -----------> table.filter:=??????
    3- Enfin, filtrer la table ----------> table.filtered:=true

    Ca va marcher sans aucun doute.
    Bon courrage.
    Deux personnes n'apprennent pas, un arrogant et un timide.

  12. #12
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    essai un peut d'utiliser des requettes SQL moi personnellement je n'utilise plus les filtes c'est extrement delicat a gérer avec les quottes, en bien avoir le meme resultat avec des query

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    Kaouane, jai essayer mais ca ne fonctionne pas, le programme me retourne seulement un enregistremement si ma recherche est exacte (partiel ne retourne rien)

    aityahia, Je n'ai jamais utilise Sql, donc je ne sais pas du tout par ou commence pour faire une requete sql, est-ce que tu pourrais m'aider ?
    (du moin me donne un bon point de depart)

    Merci

  14. #14
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    ok dite nous quel version de delphi et type de base de données vous utiliser et on vous aidera a construire ta premiere requette.

  15. #15
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Points : 165
    Points
    165
    Par défaut
    Si tu veux faire un filtre partiel, il faut saisir :
    (ma_table.filtre>="??????") or (ma_table.filtre<="??????");
    Ca doit marcher sans aucun doute.
    Deux personnes n'apprennent pas, un arrogant et un timide.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    Kaouane : peut-tu me donner un exemple de code, je suis pas sur de la syntaxe de ce que tu veux me faire essayer.

    Aityahia : J'utilise Delphi 7, Ma base de donnee est en Access (.MDB)
    et j'utilise ces composante pour me connecte : Adoconnection, Adotable, et un Datasource, la table est afficher dans un Dbgrid. et je veux faire un filtre partiel dans la table et que le dbgrid affaiche tout les enregistrement correspondant a la chaine de caracteres que jai inscrit dans un edit1.
    le filtre se fait en cliquand sur un bouton.

    Merci

  17. #17
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par kaouane
    Si tu veux faire un filtre partiel, il faut saisir :
    (ma_table.filtre>="??????") or (ma_table.filtre<="??????");
    Ca doit marcher sans aucun doute.
    on ne peut pas utiliser lopérateur < et > pour les valeur chaine Braind3d essai de faire un filtre avec une valeur partiel
    pour utiliser une requette :

    a la place de ton ADOTable insert un objet TADOQuery ou TADODatatset

    et dans la propriété SQL ou CommandText tu insert le code suivant.
    il faut spécifier la connection de la requette

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     SELECT * FROM le_nom_table 
    WHERE (Ville LIKE :MonParam)
    MomParam est un parametre pour pouvoir donnée des valeur



    et dans votre code Onclick du boutton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     if Edit1.Text <>'' Then
      Begin
       MyQuery.Close;
       MyQuery.Parametres.ParamByName('MonParam').value :=Edit1.Text+'%';
       MyQuery.Open;
      End;
    le % et le caractère générique.

  18. #18
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2006
    Messages : 249
    Points : 165
    Points
    165
    Par défaut
    Citation Envoyé par aityahia
    on ne peut pas utiliser lopérateur < et > pour les valeur chaine
    Mon ami;
    Je t'assure que c'est très fesable et tu n'as qu'à l'essayer.
    J'utilise cela dand chaque besoin et ça marche toujours.
    Deux personnes n'apprennent pas, un arrogant et un timide.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut
    Aityahia, Ca fonction mais :
    MyQuery.Parametres.ParamByName('monparam').value :=Edit1.Text+'%';
    sinon le programme me retournais une erreur : Parametre non trouvés.
    Ca fonctionne mais pas exactement comme je le voudrais, 2 choses:

    1- A l'ouverture que de la table aucun enregistrement apparait. (DBGrid)
    si je fait ma recherche les enregistrement voulu apparaissent, je veux qu'a l'ouverture de la table tout les enregistrements apparaissent avant de faire une recherche.

    2- Lors de la Recherche, Seulement les enregistrement commencant par la chaine de caractere apparaissent, ce que je veux c'est tout les enregistrement contenant la chaine de caractere voulu, qu'elle soit un debut, millieu ou a la fin d'un enregistrement.

    Merci!!
    Brain3d

  20. #20
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    oui c'est un oublie vous devez donné le nom du paramettre bon vous pouvez essayer sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if Edit1.text = '' then
    begin 
     MyQuery.Close;
     MyQuery.CommandText:='SELECT * FROM le_nom_table ';
     MyQuery.Open;
    end
     else
    begin
    MyQuery.Close;
    MyQuery.CommandText:='SELECT * FROM le_nom_table WHERE (Ville LIKE :MonParam)';
    MyQuery.Parametres.ParamByName('MonParam').value :='%'+Edit1.Text+'%'; 
    MyQuery.Open;
    end;
    et dans l'évenement OnShow de ta fiche tu appel l'evenement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1.OnChange(sender);

    nomalement sa devrai marcher

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

Discussions similaires

  1. compteur dans une base de données access
    Par flex@ dans le forum C#
    Réponses: 2
    Dernier message: 27/12/2007, 08h23
  2. Réponses: 2
    Dernier message: 02/11/2007, 18h12
  3. Ajouter des éléments dans une base de données Access
    Par bidule123456 dans le forum ASP
    Réponses: 74
    Dernier message: 07/09/2007, 14h00
  4. Réponses: 6
    Dernier message: 18/07/2006, 20h32
  5. Réponses: 3
    Dernier message: 01/07/2006, 11h27

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