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 :

Filtrer une Table sur une partie d'un champ


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Filtrer une Table sur une partie d'un champ
    je voudrais pouvoir filtrer une table .dbf sur une partie d'un champ; supposons que le champ soit composée de 13 caracteres je voudrais pouvoir les filtrer de façon a ne conserver que les enregistrement dont le champ de tri finissent par les mêmes 6 caractéres; Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Tu peux utiliser l'événement OnFilterRecord de la table.

    Mais j'avais plutôt en tête l'utilisation d'une requête avec un filtre de type WHERE CHAMP LIKE '%ABCDEF'.
    A vérifier si cela est supporté par dBase.

    @+

  3. #3
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    bonjour

    Dans Delphi avec Dbase pour faire une extraction partielle la chaîne doit se terminer par '*'.

    Exemple CODE='21*' extraira tous les codes commençant par 21.

    Mais pour les catactéres finaux je ne vois pas de solution simple.

  4. #4
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    Avec SQL local (Delphi 4) on a les substitutions ci-dessous :

    Prédicat LIKE

    Indique la similarité d'une valeur comparée à une autre.

    valeur [NOT] LIKE [car_substitution] valeur_comparaison [car_substitution] [ESCAPE car_échap]

    Description
    Utilisez le prédicat de comparaison LIKE pour filtrer une table en fonction de la similarité entre une valeur de colonne et une valeur de comparaison. L'utilisation de caractères de substitution permet la comparaison en fonction de la totalité ou d'une partie de la valeur colonne.

    SELECT *
    FROM client
    WHERE (société LIKE "Adventure Undersea")

    Le caractère générique de substitution ("%") peut être utilisé dans la comparaison pour représenter un nombre inconnu de caractères. LIKE renvoie TRUE lorsqu'une partie de la valeur de colonne correspond à la partie de la valeur de comparaison qui ne se trouve pas sur la position du caractère générique. Le caractère générique peut apparaître au début, au milieu ou à la fin de la valeur de comparaison (ou plusieurs combinaisons de ces positions). Par exemple, l'instruction ci-dessous extrait des lignes où la valeur de colonne commence par un "A" suivi par un nombre quelconque de n'importe quel caractère. Les valeurs correspondantes pourraient être "Action Club" et "Adventure Undersea", mais pas "Blue Sports".

    SELECT *
    FROM client
    WHERE (société LIKE "A%")

    Le caractère de substitution caractère unique ("_") peut être utilisé dans la comparaison pour représenter un caractère unique. LIKE renvoie TRUE lorsqu'une partie de la valeur de colonne correspond à la partie de la valeur de comparaison qui ne correspond pas à la position du caractère de substitution caractère unique. Le caractère de substitution caractère unique peut apparaître au début, au milieu ou à la fin de la valeur de comparaison (ou de plusieurs combinaisons de ces positions). Utilisez un caractère de substitution caractère unique pour chaque caractère générique dans le filtre. Par exemple, l'instruction ci-dessous extrait les lignes où la valeur de colonne commence par "b" et finit par "n", avec un caractère de n'importe quelle valeur entre les deux. Les valeurs correspondantes pourraient être "bin" et "ban", mais pas "barn".
    SELECT mots
    FROM dictionnaire
    WHERE (mots LIKE "b_n")

    Utilisez NOT pour renvoyer la condition inverse d'une comparaison LIKE.

    Utilisez ESCAPE lorsque le caractère générique "%" ou "_" apparaît dans la colonne. Le mot-clé ESCAPE désigne un caractère d'échappement. Dans la valeur de comparaison pour le prédicat LIKE, le caractère qui suit le caractère d'échappement est traité comme un caractère de données et pas comme un caractère générique. Les autres caractères génériques dans la valeur de comparaison ne sont pas affectés.

    Dans l'instruction ci-dessous, le caractère "$" est désigné comme le caractère d'échappement. Dans la valeur de comparaison pour le prédicat LIKE ("%10$%%"), le "%" qui suit juste après le caractère d'échappement est traité comme donnée dans PercentValue. Ceci permet un filtrage en fonction de la chaîne "10%".

    SELECT *
    FROM Ventes
    WHERE (PercentValue LIKE "%10$%%" ESCAPE "$")

    LIKE peut être utilisé avec les types de données CHAR ou compatibles. Si une valeur est d'un type de données incompatible, convertissez cette valeur au moyen de la fonction CAST en un type de données compatible. La comparaison effectuée par le prédicat LIKE est indifférente à la casse.

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  3. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50

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