Index enregistrement

Signaler
Messages postés
102
Date d'inscription
vendredi 29 mars 2002
Statut
Membre
Dernière intervention
14 février 2013
-
Messages postés
102
Date d'inscription
vendredi 29 mars 2002
Statut
Membre
Dernière intervention
14 février 2013
-
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

Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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 ?
Messages postés
102
Date d'inscription
vendredi 29 mars 2002
Statut
Membre
Dernière intervention
14 février 2013

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
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

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
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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.
Messages postés
102
Date d'inscription
vendredi 29 mars 2002
Statut
Membre
Dernière intervention
14 février 2013

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
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Ca ne marche pas ma solution ?

Jer
Messages postés
102
Date d'inscription
vendredi 29 mars 2002
Statut
Membre
Dernière intervention
14 février 2013

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