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

Composants FMX Delphi Discussion :

[Android]cherche composant qui groupe a partir d'une Table.


Sujet :

Composants FMX Delphi

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut [Android]cherche composant qui groupe a partir d'une Table.
    bonsoir,

    je vous donne un exemple pour mieux expliqué la situation :

    sur ma base de données j'ai une table du genre :


    nom prénom age sexe métier

    x y 20 H Plombier
    e k 23 H Maçon
    d o 40 F Pharmacienne
    t i 36 H Maçon
    e p 35 F Pharmacienne
    p s 47 H Plombier
    k p 47 H Maçon



    je cherche un composant qui peut me faire ça (groupement par métier):

    Plombier
    x
    p
    Maçon
    e
    t
    k
    Pharmacienne
    d
    e

    avec un tutoriel si c'est possible .voila merci d'avance.

  2. #2
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut listview
    bonjour

    C'est le listview


    cordialement

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Je suis d'accord le listview est LE composant,
    cependant passer par une requête améliorera le processus
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT METIER,NOM FROM TABLE ORDER BY METIER
    la vidéo étant longue et en anglais voici le principe
    1-poser la Query et définir les champs
    2-poser la listview
    3- lier le champ nom a Item.text, le champ metier a ItemHeaderBreak et ItemHeaderText
    et voilà c'est tout : voilà le résultat avec la base de données employees, sans "fioritures"

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DEPARTMENT,NOM FROM Employee ORDER BY DEPARTMENT
    Nom : Capturelistview.PNG
Affichages : 329
Taille : 40,7 Ko

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut Amélioré l’accessibilité de ma listeview .
    Bonjour,

    merci pour votre aide et ça marche impeccablement, mais comme j'ai une base volumineuse, la liste est très grande donc je cherche a amélioré:
    A- ma liste pour plus d'accessibilité .

    exemple :

    1 -première vue : tous les métiers sont regroupé (je ne veut pas afficher les personnes),

    Plombier
    Maçon
    Pharmacienne

    2- dès que j'appuis sur un métier ,les personnes affilier apparaît (dans ce cas les maçons) :


    Plombier
    Maçon
    e
    t
    k
    Pharmacienne


    B- Encore pour plus d'accessibilité je cherche a intégrer une zone de recherche a ma liste (j'ai vus que ça existe sur Tlistbox) ,je ne sais pas s'il y a une possibilité pour le faire.

    merci .

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    pour améliorer le tout : 2 requêtes au lieu d'une
    1 - SELECT DISTINCT METIER FROM <Table> ORDER BY METIER
    2 - SELECT NOM FROM <Table> WHERE METIER=:METIER

    voici une solution :
    Poser un multiview
    dans la partie gauche (panneau ancré) un ListView (align alclient) lié à la Query1 avec synchronisation
    dans la partie droite un listview lié à la Query2

    Quant au point B , il suffit sur une listview de cocher la propriété SearchVisible
    Attention la recherche par défaut est non sensible à la casse et sous la forme "contient le texte" pour changer le comportement en 'Commençant par' il faut utiliser l'évènement OnFilter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.ListView1Filter(Sender: TObject; const AFilter,
      AValue: string; var Accept: Boolean);
    begin
    Accept:=AValue.StartsWith(AFilter,true) OR (Length(AFilter)=0);
    end;

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    Bonjour,

    dans la partie gauche (panneau ancré) un ListView (align alclient) lié à la Query1 avec synchronisation
    dans la partie droite un listview lié à la Query2
    dans l’événement OnChange du Premier ListView j'ai exécuter un filtre sur ma table (j'ai utiliser une table parce-que le query ne s'affiche pas quand j'exécute une requête paramétrer )

    c'est ce que tu veut dire par avec synchronisation?

    merci.

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par adelcrb Voir le message
    dans l’événement OnChange du Premier ListView j'ai exécuter un filtre sur ma table (j'ai utiliser une table parce-que le query ne s'affiche pas quand j'exécute une requête paramétrer )
    c'est ce que tu veut dire par avec synchronisation?
    si tu regardes le post #3 , sans l'image écran du livebinding tu remarqueras dans listView1 un Synch et dans BindSourceDB1 une * . Lies l'* au Synch, tu vas obtenir un message te disant qu'il supprime la liaison pour la remplacer par une autre : Acceptes
    clicques sur le nouveau lien bleu, change les propriétés nécessaires au besoin (normalement si l'étape indiquée dans le post #3 est faite pas besoin) et tu obtiendras un listview "réactif"
    il suffit ensuite de poser un TDatasource lié à la query 1 indiquer que mastersource de Query2 = Datasource1 et pas besoin de gérer l'évènement OnChange, pas besoin de Filtre .

    Bref c'est la beauté du livebindings mais aussi son inconvénient car invisible en lecture directe du code

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    Bonjour;


    pour commencer je tien a préciser que j'étais en vacance et je viens de rentrer (ce qu'explique tous ce temps pour poster ).


    - j'ai suivi tes instructions pour faire une synchronisation mais j'ai pas réussis .

    voila ce que j'ai fais .

    1 -
    si tu regardes le post #3 , sans l'image écran du livebinding tu remarqueras dans listView1 un Synch et dans BindSourceDB1 une * . Lies l'* au Synch, tu vas obtenir un message te disant qu'il supprime la liaison pour la remplacer par une autre : Acceptes
    2-
    clicques sur le nouveau lien bleu, change les propriétés nécessaires au besoin (normalement si l'étape indiquée dans le post #3 est faite pas besoin) et tu obtiendras un listview "réactif"
    C'est fait.
    3-
    il suffit ensuite de poser un TDatasource lié à la query 1 indiquer que mastersource de Query2 = Datasource1
    comme l'indique la photo ,C'est fait.

    Nom : Capture.JPG
Affichages : 299
Taille : 157,6 Ko

    Nom : Capture1.JPG
Affichages : 299
Taille : 116,4 Ko

    La première requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TProduct
    GROUP BY nType
    ORDER BY nType


    La deuxième requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TProduct
    WHERE nType = :ntype
    ORDER BY nType

    je suis un peut perdu entre les paramètres de ma requête , les composant et le livebinding .


    je vous remercie d'avance pour votre aide .

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 638
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    moi je suis encore en vacances (plus pour longtemps hélas)
    je n'ai fait qu'un survol , pas le temps de regarder en détail les images écrans) mais tes deux requêtes ne me plaisent pas

    tout d'abord la première : ne prendre que le nécessaire au niveau champs
    ntype et à l'occasion le nombre d'enregistrement par type que tu pourras mettre en détail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Ntype,count(*) from TProduct group by ntype order by ntype
    comme ntype semble être un clé étrangère il serait bon de la lier (join) à la table décrivant les types de produits et ainsi de rajouter (et trier) sur le libellé du type et non sur le code. Si le nombre de produit pas type n'est pas nécessaire, il serait encore plus facile de faire une requête sur la table des types

    quant à la seconde
    SELECT ntype,nproduit,sproduit, ... FROM TProduct where ntype=:ntype order by sproduit
    ceci étant même remarque pour le * pour une liste il est contre productif de vouloir récupérer tous les champs alors que seuls quelques-uns seront affichables,
    si à la suite de cette liste il faut afficher toutes les caractéristiques du produit) alors une nouvelle requête paramétrée à partir de la seconde permettra d'obtenir le produit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from TProduct where ntype=:ntype and nproduct=:nproduct
    pour cela il faudra bien sur que la seconde query contienne (entre autres) ces deux champs

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    moi je suis encore en vacances (plus pour longtemps hélas)
    hélas pour toi et vivement pour moi :p .

    j'ai réussie a le faire sur une simple query mais pas avec 2 en synchronisation .

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/01/2015, 21h54
  2. Réponses: 2
    Dernier message: 17/07/2014, 12h08
  3. cherche composant qui recupère numero de serie hdd
    Par Gavroche7 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 05/02/2009, 09h55
  4. Réponses: 1
    Dernier message: 21/12/2006, 11h17
  5. Réponses: 9
    Dernier message: 07/10/2004, 19h41

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