Lister sans doublons les elements d'une DB et afficher dans un treeview [Résolu]

Messages postés
190
Date d'inscription
mercredi 24 novembre 2004
Dernière intervention
15 mai 2013
- 29 sept. 2008 à 23:21 - Dernière réponse :
Messages postés
5
Date d'inscription
lundi 2 février 2009
Dernière intervention
1 novembre 2012
- 29 oct. 2012 à 18:36
Bonjour au forum,

Voila j'ai un tit soucis dont je n'arrive pas a me depatouiller... moi et les algorithmes ça fait deux :mouarf:

bon voici mon probleme, j'ai une DB access avec une table contenant deux champs (Produits et Lot).
Pour chacun de ces champs j'ai plusieurs entrées qui peuvent presenter des doublons... voici un tit exemple pour illustrer:

Produits:Lot
table:1111
chaise:3333
chaise:2222
table:9999
chaise:3333
table:1111
lampe:4444

j'aimerais trier les afficher dans un treeview la chose suivante:
+table
++1111
++9999
+chaise
++3333
++2222
+lampe
++4444

Je m'emmêle les pinceaux dans les boucles de l'algo et au final ça donne tous sauf ce que je veux. Je pense qu'il faut de phase de tri dans l'algo mais j'y arrive po du tout...

si quelqu'un peut m'apporter son aide
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
1231
Date d'inscription
vendredi 16 novembre 2007
Dernière intervention
16 juin 2009
- 30 sept. 2008 à 10:27
3
Merci
Re:

SELECT DISTINCT  Produit, lot FROM tatable ORDER BY produit

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- Le bon t

Merci lillith212 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de lillith212
Messages postés
1231
Date d'inscription
vendredi 16 novembre 2007
Dernière intervention
16 juin 2009
- 30 sept. 2008 à 07:51
0
Merci
Salut,

pour ne pas avoir de doublon dans ta requête de selection utilise le mot clé DISTINCT (un truc facile c'est que tu la tapes en sql sous access et tu vois le résultat pour apres l'adapté à ta commande vb) Ensuite tu inserts le résultat au niveau de ton treeview.
Il n'y a pas de problème mathèmatique dans ta question c'est simplement comment tu vas faire ta requete.

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- Le bon thème tu choisiras --
Commenter la réponse de lillith212
Messages postés
117
Date d'inscription
lundi 15 avril 2002
Dernière intervention
1 juillet 2011
- 30 sept. 2008 à 10:06
0
Merci
Salut,

Je ferait un Select * From TABLE order by produit,
ensuite je parcour les enregistrements, si l'enregistrement actuel est un nouveau produit tu le rajoute et si il a le produit identique que l'enregsitrement precedent, tu ne rajout pas le produit mais le lot au produit actuel,

bonne chance,
a++
seb

Développement Rapide PHP / VBNET -> www.database2code.com
Commenter la réponse de aserf
Messages postés
190
Date d'inscription
mercredi 24 novembre 2004
Dernière intervention
15 mai 2013
- 30 sept. 2008 à 14:24
0
Merci
hello,

je n'avais pas penser a faire mon tri directement dans la requête sql.... mais bon j'ai une excuse, je debute lol

encore merci pour votre aide
Commenter la réponse de waspy59
Messages postés
29
Date d'inscription
jeudi 7 décembre 2000
Dernière intervention
30 octobre 2012
- 23 févr. 2009 à 15:30
0
Merci
Bonjour, a vous
je viens écrire dans se tuto car je pense etre dans la bonne partie.

Voila mon problème :

J ai une base de données : matériaux / sous-ensembles / produits / ensembles
et donc un sous-ensembles peut avoir plusieurs matières/ un produit peut avoir plusieurs sous-ensembles / etc...
Je peux donc avoir : un produit avoir des sous-ensembles qui ont plusieurs fois les mêmes matériaux.

( je m exprime mal donc si vous voulez des précisions demander :p )

voila mon code pour afficher mes données :

Do While Not rs_user.EOF
       'ordre : (lien, action, clée, text, image)
        Set n = TrvContact.Nodes.Add("Root", tvwChild,  rs_user.Fields(1), , rs_user.Fields(1), 1)
        test.text = rs_user.Fields(10)
        lienfils.text = rs_user.Fields(1)        Set rs_ensemb DB.OpenRecordset("select * from ensembles where userENS " + test.text)
       Do While Not rs_ensemb.EOF
              'ordre : (lien, action, clée, text, image)
              Set n = TrvContact.Nodes.Add(i, tvwChild,  rs_ensemb.Fields(0), rs_ensemb.Fields(0), 2)
              lienfilsfils.text = rs_ensemb.Fields(0)
              Set rs_prod = DB.OpenRecordset("select * from produit, ensembles, regrouper where produit.desP=regrouper.desP and regrouper.desENS = ensembles.desENS and ensembles.desENS='" + rs_ensemb.Fields(0) + "';")
            rs_ensembl.movenext
      loop
rs_user.movenext
loop

Ce n'est qu'une partie de mon code, ce code marche si on rencontre que une fois un matériaux, ou un sous-ensembles , ou un produit, etc...

Je suis en train de changer et de tester avec desi ...

Je vous remercie d'avance pour votre future aide.

Cordialement
Guilty90
Commenter la réponse de guilty90
Messages postés
29
Date d'inscription
jeudi 7 décembre 2000
Dernière intervention
30 octobre 2012
- 23 févr. 2009 à 16:16
0
Merci
tiss , c est toujours aprés avoir demander qu'on trouve tout seul lol :





Voila mon code ( c'est normale si vous comprennez pas tout de suite :) ) :

b = 1
d = 1
f = 1
h = 1
j = 1
Do While Not rs_user.EOF
    'ordre : (lien, action, clée, text, image)
        a = "user " & b
        Set n = TrvContact.Nodes.Add("Root", tvwChild, a, rs_user.Fields(1), 1)
        test.text = rs_user.Fields(10)        Set rs_ensemb DB.OpenRecordset("select distinct * from ensembles where userENS " + test.text)
        b = b + 1
      
        Do While Not rs_ensemb.EOF
            c = "ensemble " & d
            Set n = TrvContact.Nodes.Add(a, tvwChild, c, rs_ensemb.Fields(0), 2)
            Set rs_prod = DB.OpenRecordset("select distinct * from produit, ensembles, regrouper where produit.desP=regrouper.desP and regrouper.desENS = ensembles.desENS and ensembles.desENS='" + rs_ensemb.Fields(0) + "';")
            d = d + 1
           
            Do While Not rs_prod.EOF
                E = "produit " & f
                Set n = TrvContact.Nodes.Add(c, tvwChild, E, rs_prod.Fields(0), 2)
                Set rs_SE = DB.OpenRecordset("select distinct sous_ensembles.désigSE from sous_ensembles, contenir, produit, regrouper, ensembles Where regrouper.desP=produit.desP and regrouper.desENS = ensembles.desENS and contenir.désigSE=sous_ensembles.désigSE and contenir.desP=produit.desP and produit.desP = '" + rs_prod.Fields(0) + "';")
                f = f + 1
                Do While Not rs_SE.EOF
                g = "sous-ensembles " & h
                    Set n = TrvContact.Nodes.Add(E, tvwChild, g, rs_SE.Fields(0), 2)
                    Set rs_mat = DB.OpenRecordset("select distinct base.Désignation_matériel From base, sous_ensembles, contenir, produit, avoir, regrouper, ensembles Where regrouper.desP=produit.desP and regrouper.desENS = ensembles.desENS and contenir.désigSE = sous_ensembles.désigSE And contenir.desP = produit.desP and avoir.désigSE=sous_ensembles.désigSE and avoir.Désignation_matériel= base.Désignation_matériel and sous_ensembles.désigSE = '" + rs_SE.Fields(0) + "';")
                    h = h + 1
                    Do While Not rs_mat.EOF
                    i = "matériaux " & j
                        Set n = TrvContact.Nodes.Add(g, tvwChild, i, rs_mat.Fields(0), 2)
                        j = j + 1
                        rs_mat.MoveNext
                    Loop
                rs_SE.MoveNext
            Loop
           rs_prod.MoveNext
        Loop
        rs_ensemb.MoveNext
    Loop
    'je passe à l'enregistrement suivant
    rs_user.MoveNext
Loop

L'erreur venait enfaite du fait que je nommais automatiquement les sous parties et donc que s'il avait un doublons : ERREUR.
J'ai donc forcer mon programme a donnée des nom "correct" ( hihihih) a mes sous parties.

J'espere que ce code peut aider des gens :)

Cordialement
Guilty90
Commenter la réponse de guilty90
Messages postés
5
Date d'inscription
lundi 2 février 2009
Dernière intervention
1 novembre 2012
- 29 oct. 2012 à 18:36
0
Merci
salut
voila mon exemple dans la partie propriete de ma liste de choix mais j' ai des doublon
SELECT [3 suivi entreprise d'accueil].Numero, [3 suivi entreprise d'accueil].[Entr sigle] FROM [3 suivi entreprise d'accueil];
comment faire pour ne pas avoir de doublon merci
Commenter la réponse de aedic

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.