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 :

Delphi Interbase filtre


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut Delphi Interbase filtre
    Bonjour a tout le monde et bonne année,
    Voila, je plante depuis quelques jours sur l'utilisation d'un filtre (avec delphi6) d'une table créée sur un serveur Interbase6 (je suis débutant en interbase).
    Pour filtrer une colonne "Nom" suivant un Edit1.text j'utilise ceci sur son évènement OnKeyPress:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IBTable1.Filter:='Nom='''+Edit1.Text+'*''';
    IBTable1.Filtered:=True;
    Edit1.SetFocus  ;
    J'ai quatre tables (4 IBtables fonctionnent en jointure),
    mais ca donne rien (ca fonctionne en Monoposte mais pas en client/server)
    et quand je mets le filtre a false le DBGrid m'affiche tous les enregistrements.
    Je précise que j'utilise un IBQuery, IBTransaction, IBUpdatesql et IBClientDataSet
    Est ce qu'il y a quelqu'un qui peut m'orienter, c'est urgent.
    et merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    ton exemple est sur IBTable1, ce n'est pas un IBQuery
    Evite d'utiliser le IBTable en Client\Server mais utilise le TIBQuery pour lancer un SQL avec ton Filtre dans le WHERE !
    Sur l'IBQuery, un Filtre n'est pas très justifié, tu récupéres toute la table par un SELECT * puis tu appliques le Filtre ? C'est n'est pas très performant !

    Ensuite, pour la syntaxe, je n'ai pas utilisé de Filter depuis Paradox avec BDE, donc je ne pourrais pas dire son Filter est bon ...

    Vérifie si FilterOptions contient foPartialCompare pour gérer le * dans Filter

    mais j'écrirais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IBTable1.Filter:= Format('Nom LIKE ''%s%%''', [Edit1.Text]);
    IBTable1.Filtered:=True;
    Edit1.SetFocus  ;
    essayer aussi " au lieu de '

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IBTable1.Filter:= Format('Nom LIKE "%s%%"', [Edit1.Text]);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    je n'utilise jamais IBTable depuis que j'ai lu le livre de olivier et Paul et j'utilise surtout IBDataset et IBsql,
    Citation Envoyé par checkrymo Voir le message
    mais ca donne rien (ca fonctionne en Monoposte mais pas en client/server)
    et quand je mets le filtre a false le DBGrid m'affiche tous les enregistrements.
    Je précise que j'utilise un IBQuery, IBTransaction, IBUpdatesql et IBClientDataSet
    quelque fois j'utilise TClientdataset, mais jamais TIBClientDataset, mais je crois que je vais me remettre après la lecture de ce text pour bénificier des aggrégas de TClientDatset et de al puissance de TIBDataset , 3 en un, coul non?? et en peut ajouter le filtrage par Filter et filtred de TClientDataset alors on 4 en 1

  4. #4
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut
    Merci ShaiLeTroll et edam pour votre aide.
    ShaiLeTroll , j'ai utilisé ta commande finalement ca marche, mais comment ajouter [locaseinsensitive] la commande pour qu'il ne fasse pas de différence entre minus et majus.
    Edam, ca sera très gentil de ta part si tu me donne plus de détails sur l'utilisation de IBDataset, IBsql et filtrage par TClientDataset. je pense qu'en utilisant plusieurs postes clients, comme a dit ShaiLeTroll, il faut utiliser les IBQuery et IBTransaction (avec commit et Rollback) pour soulager le serveur.
    Merci une autre fois.

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Citation Envoyé par checkrymo Voir le message
    comment ajouter [locaseinsensitive] la commande pour qu'il ne fasse pas de différence entre minus et majus.
    Pour FilterOptions voilà ce que dit aide Delphi :
    Par défaut, FilterOptions contient un ensemble vide. Pour les filtres basés sur des champs chaîne, affectez la valeur foCaseInsensitive à FilterOptions pour obtenir toutes les variations de la chaîne sans tenir compte des différences majuscule/minuscule.
    ainsi pour tenir compte de la différence on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IBTable1.FilterOptions := [foCaseInsensitive];
    pour retourner à l'état par défaut on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IBTable1.FilterOptions := [];

  6. #6
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut
    Merci bcp Just-Soft,

  7. #7
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut
    Je pense que c'est l'inverse non?

Discussions similaires

  1. [delphi][interbase]problème de transaction
    Par daheda dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/10/2006, 09h12
  2. [Delphi][Interbase] pb de procédures stockées
    Par 0rus59 dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/07/2006, 13h53
  3. [Delphi] [interbase] créer un utilisateur
    Par hanane28 dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/06/2005, 19h41
  4. Installation appli client Delphi / Interbase
    Par ETOKA dans le forum Bases de données
    Réponses: 6
    Dernier message: 22/01/2005, 12h09
  5. Les transactions avec Delphi & InterBase
    Par Redhouane dans le forum Bases de données
    Réponses: 5
    Dernier message: 31/12/2004, 15h34

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