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 :

Recherche dans une table non indexée


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut Recherche dans une table non indexée
    Slt à tous,
    Je souhaite effectuer une recherche d'une valeur par un edit dans une table composée de plusieurs centaines de records composés eux--mêmes de 160 champs. Cette table n'est pas indexée afin d'éviter d'alourdir la procédure et la taille (160 index !!). Lorsque j'ai trouvé cette valeur, je dois sélectionner le record pour le lier à un dbgrid.
    Dois-je utiliser la syntaxe de "findnearest" ou existe-t-il une autre syntaxe parcourant l'ensemble des champs de toute la table?
    Mes recherches sont vaines et mes essais de code par boucle ne me donnent pas la solution.
    Merci
    Disposer du "Savoir" c'est bien, le partager c'est encore mieux. !

  2. #2
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    bonjour,
    e souhaite effectuer une recherche d'une valeur par un edit dans une table composée de plusieurs centaines de records composés eux--mêmes de 160 champs. Cette table n'est pas indexée afin d'éviter d'alourdir la procédure et la taille (160 index !!). Lorsque j'ai trouvé cette valeur, je dois sélectionner le record pour le lier à un dbgrid.
    tu peux faire une recherche sans indexer tes champs comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var rech:string;
    begin
    rech:=Edit1.Text;//on recherche le nom du champ que contient "Edit1"
    Table1.First;
    while not Table1.Eof do begin
    if Table1.FieldValues['LE nom du Produit']=rech then begin
    break;//la recherche s''arrête si on trouve l'enregistrement 
    end else
    Table1.Next; // sinon on continue la recherche.
    end;
    A+

    NABIL74

  3. #3
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut


    Je ne sais pas avec quel SGBD tu travailles, mais as tu pensé à faire un SQLQuery ? Comme ceci par exemple

    SQ1.Close;
    SQ1.SQL.Clear;
    SQ1.SQL.Add('select * from Ma_Base where Ma_Zone1 = :Critere1 and ');
    SQ1.SQL.Add('Ma_Zone2 = :Critere2 and......(]à volonté)
    SQ1.ParamByName('Critere1').AsXXXXX := Zone1;
    SQ1.ParamByName('Critere2').AsXXXXX := Zone2;
    (etc...)
    SQ1.Active := true; (peut varier suivant le type de SQL
    Les XXXX symbolisent String, Integer,..... suivant tes types de critères

    Tu peux aussi pofiner, suivant l'entroi où tu mets le SQL et la saisie des paramètres

    Tu utilises un DataSource que tu relies à ton SQLQuery et tu relies ton DBGrid à ton DataSource

    A +
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 491
    Points : 2 754
    Points
    2 754
    Billets dans le blog
    10
    Par défaut
    Tu as une autre possibilité.
    Tu crée une clé primaire sur ta table avec un nombre entier.
    Puis tu crée une 2ème table avec deux colonnes L'une avec le mot à rechercher, la 2ème avec la valeur de la clé primaire de la première table.
    Mettre une cle primaire sur les deux champs dans la 2ème table.
    La table 2 est rechargée par un scan de la table 1.

    exemple en CSV
    table1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1;Jean;Dupont
    2;Pierr;Durant
    table2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dupont;1
    Durant;2
    Jean;1
    Pierre;2

  5. #5
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    merci Nabil... et les autres.
    J'opte pour ta solution qui me va mieux !!!
    Disposer du "Savoir" c'est bien, le partager c'est encore mieux. !

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

Discussions similaires

  1. Recherche dans une table a 3 index
    Par Night_Wolf1619 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/10/2013, 12h42
  2. Réponses: 1
    Dernier message: 27/03/2006, 16h58
  3. Recherche dans une table
    Par Fredo67 dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2006, 17h21
  4. Recherche dans une liste non trié
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 13/09/2004, 13h56
  5. recherche dans une table Access en ASP
    Par D-D dans le forum ASP
    Réponses: 3
    Dernier message: 09/06/2004, 10h12

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