Index enregistrement

cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013 - 23 juin 2006 à 10:39
cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013 - 26 juin 2006 à 09:01
Bonjour,

Je ne sais pas si c'est possible, mais je souhaiterais savoir si il est possible de connaitre la position relative d'un enregistrement dans le contexte suivant :
   - J'ai deux tables : "Groupe" et "Individu"
   - Mes deux tables sont liées par une relation de 1 à N.

voici mes enregistrements (ordonnés grâce à un champ bien précis) :
   Groupe : G1 - G2 - G3
   Individus : I11(G1) - I12(G1) - I13(G1) - I21(G2) - I31(G3) - I32(G3)

Je souhaiterais, dans un requête, récupérer la position de chaque individu, dans son groupe. le résultat devrait être ceci :





Individu | Groupe | Position abolu | Position relative |
   I11   | G1     |       1        |          1        |
   I21   | G2     |       2        |          1        |
   I12   | G1     |       3        |          2        |
   I31   | G3     |       4        |          1        |
   I32   | G3     |       5        |          2        |
   I13   | G1     |       6        |          3        |




Si c'est pas possible, alors tant pis ...

Merci,

TALERE

7 réponses

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
23 juin 2006 à 11:52
Salut, je ne voudrais pas te donner de faux espoirs mais j'ai déjà fait un truc dans le genre. Suffit que je le retrouve.
Tu utilises bien VB6 et ACCESS ?
0
cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013
23 juin 2006 à 12:13
oui, effectivement, j'utilise VB6 et access.

La finalité de ma question est la création d'une matrice ayant un nombre de ligne égale au nombre de groupes, et autant de colonne que le maximum qu'un groupe peut avoir d'individus. Les valeurs de ma matrice auront alors la position absolue des individus ou 0 si il n'y en a plus.

Pour l'instant, ce que j'ai fait, j'ai crée un requete qui me donne la liste Groupe/individu, classé, dans un premier temps, suivant l'ordre du groupe, puis dans un second temps, suivant l'ordre des individus. Ainsi, je parcours chaque ligne de ma requete et dès que le groupe change, je passe à la ligne suivante de ma matrice, sinon je passe à la colonne suivante. En parallèle, j'ai une deuxième requete ou se trouve tous les individus, classés par ordre, me permettant de retrouver la position absolue. Ayant les coordonnées de ma matrice et la valeur correspondante, je peux mettre à jour ma matrice.

Cette technique me semble assez fastidieuse pour l'interêt qu'elle apporte, mais ça se trouve, c'est la solution ... à voir ...

A bientôt,

TALERE
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
23 juin 2006 à 16:22
Utilises des compteurs, 1 par groupe

if rs!groupe="G1" then CG1=CG1+1:position_relative.text=CG1
if rs!groupe="G3" then CG2=CG2+1:position_relative.text=CG2
if rs!groupe="G2" then CG3=CG3+1:position_relative.text=CG3

Jer
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
23 juin 2006 à 17:01
Talere > Ben, j'ai retrouvé mon code mais il ne vaut rien pour ce que tu veux faire.
Je crois bien que ta solution est dans les meilleures.
Faudrait voir ton code pour voir s'il est possible de le simplifier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013
23 juin 2006 à 17:12
J'ai également essayé de me créer une fonction VB qui rappelle le numéro d'enregistrement lors de l'éxécution d'une requete, mais cela ne marche pas non plus (disons que mes connaissances à ce sujet sont très light).

Pour l'instant, j'arrive bien à retrouver sur quelle requete je travaille (CurrentObjectName), mais ça s'arrête là ( il me faudrait aussi l'enregistrement courant de mon objet mais je ne sais pas où il se trouve).

C'est quand même bête que la norme SQL ne puisse pas fournir la position d'un champ suivant une table bien précise (ou suivant une requete). je sais bien que dans une BDD, l'ordre ne doit pas avoir d'influence, mais moi, dans mon exemple, je ne peux pas faire sans.

Pour rentrer un peu plus dans le détail, mon projet comporte plus d'une dizaine de ces liaisons ordonnées, et je ne peux pas me permettre de créer autant de recordset et de les manipuler sans cesse, juste pour connaitre la position absolu d'un élément.

Je ne sais plus quoi faire, je suis ouvert à toute proposition ...

Bon WE quand même ...

TALERE
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
23 juin 2006 à 17:21
Ca ne marche pas ma solution ?

Jer
0
cs_Talere Messages postés 102 Date d'inscription vendredi 29 mars 2002 Statut Membre Dernière intervention 14 février 2013
26 juin 2006 à 09:01
C'est effectivement ce que j'ai fait, mais la solution est plutot lourde en termes de manipulation de données.

Le WE aidant, je pense que je vais créer une requete qui me rentre en dur la valeur de la position dans la table. Je lancerais cette requette au début de chacune de mes manipulations.

TALERE
0
Rejoignez-nous