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 TTable la valeur d'un champ a partir des autres champs


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 81
    Points : 61
    Points
    61
    Par défaut Recherche dans une TTable la valeur d'un champ a partir des autres champs
    Bonjour,
    Selon le titre du sujet, il semblerais qu'il s'agit d'un sujet récurrent mais je n'ai pas réussi à trouver depuis mercredi, discussion à mon pied.

    Dans un premier temps, je stock le résultat d'une requête dans une TTable
    Les déclarations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    type 
      Base = class
         //...
         Database        : TDatabase;
         Enregistrement : TTable;
         //...
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type 
      MaDonnee= class
         //...
         Liste: TTable;
         //...
    end;
    La requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sQuery := 'SELECT T1.tr_Ch1, T2.el_Ch1, T2.el_Ch2, T2.el_Ch3 FROM Traduction T1, Element T2 WHERE T2.el_CodeTraduc = T1.el_CodeTraduc';
             if not MaBase.requete(sQuery) then exit;//retour de requête dans la TTable Enregistrement
             MaDonnee.Liste := MaBase.Enregistrement;
    Si je ne me trompe pas, la TTable de "MaDonnee" se porte ainsi :
    Nom du champ 1 :T1.tr_Ch1
    Nom du champ 2 :T2.el_Ch1
    Nom du champ 3 :T2.el_Ch2
    Nom du champ 4 :T2.el_Ch3
    Le but maintenant, est de rechercher le champs T1.tr_Ch1 contenant la traduction pour les paramètres de l'élément ayant les caractéristiques contenu dans el_Ch1, el_Ch2, el_Ch3.

    Prenons l'exemple que les éléments sont des voitures
    el_Ch1 :type (string) (exemple 'Renault','BMW',...)
    el_Ch2 :couleur (string) (exemple 'Rouge','Noir'...)
    el_Ch3 :année (string) (exemple '1993','2002'...)
    el_CodeTraduc :code (exemple 'VOT01','VOT458'...) (string)
    (c'est pour l'exemple)
    et que les traduction retourne
    el_CodeTraduc :code (exemple 'VOT01','VOT458'...) (string)
    el_Ch1 :Traduction (exemple : 'Voiture de merde', 'voiture de classe'...) (string)

    Dans une autre fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if not MaDonnee.Liste.Locate('T2.el_Ch1;T2.el_Ch2;T2.el_Ch3',VarArrayOf(['Renault','Rouge','1993']), [] )then
    begin
       //...pas trouvé
    end
    else
       //...trouvé ok mais ou va le field resultant ??
    end;
    Les problèmes :
    J'ai une erreur disant : 'Field 'T2.el_Ch1' not found'
    J'ai essayé avec un filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaDonnee.Liste.Filter:= '(T2.el_Ch1 like ''Renault'') AND ';
    MaDonnee.Liste.Filter:= MaDonnee.Liste.Filter + '(T2.el_Ch2 like ''Rouge'') AND ';
    MaDonnee.Liste.Filter:= MaDonnee.Liste.Filter + '(T2.el_Ch3 like ''1993'')';
    MaDonnee.Liste.Filtered  := true;
    J'ai la même erreur.

    Mon But, J'ai une table de quatre champs, je veux à partir de trois champ connu trouver la valeur du quatrième champ !

    Merci d'avance.
    Xpmich.

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 81
    Points : 61
    Points
    61
    Par défaut
    Re,
    J'ai trouvé la solution (qui me plait moyennement)
    Le premier problème était que le nom de les colonnes n'était pas bon.

    Le second problème est lié au TTable. Si je ferme la base de données, je ne peux plus utiliser mon TTable malgré que celle ci soit une copie de mes enregistrements retournés par la requête.
    D'ou ma question :

    Peut on utiliser une TTable de manière non connecté à une base de donnée ?
    soit :
    1- Emmision de la requête (je sais faire)
    2- Copie du résultat de la requête dans un TTable
    3- Déconnexion complète de la base (pouvant aller jusqu'à mabase := nil; (je sais faire)
    4- Utilisation de la copie de la TTable (je sais faire)

    Merci d'avance
    Xpmcih

  3. #3
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    Citation Envoyé par Xpmich Voir le message
    Peut on utiliser une TTable de manière non connecté à une base de donnée ?
    as tu déjà regardé du côté du composant TClientDataset ?

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Disons que le solution n'est pas triviale car un des buts d'une base de données c'est justement de retourner des résultats en fonction de requêtes précises.
    Donc pourquoi ne pas utiliser une requête pour obtenir ton résultat ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2011, 21h36
  2. Recherche d'une liste de valeurs dans une autre
    Par charlebakhtovsky dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/02/2011, 09h20
  3. recherche dans un tableau la valeur d'une clé
    Par gianni7033 dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2010, 10h10
  4. [XL-2003] recherche dans une plage de valeur
    Par sallemel dans le forum Excel
    Réponses: 2
    Dernier message: 06/11/2010, 17h33
  5. Réponses: 6
    Dernier message: 29/05/2006, 19h43

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