forum Ancestrologie
Ancestrologie - Plugins et Outils => BOA => Discussion démarrée par: DDdeBerdeux le 20 Mai 2006 à 08:28:18
-
J'ai quelques doûtes sur la "portée" de la branche sélectionnée par cette option. Sur ma généalogie personnelle, elle ne garde que 2296 individus, alors que "Suppression complète d'une branche" (ou plutôt son inverse) en garde 2489 sans les témoins. La différence de 193 semble être dans des descendants d'ascendants ou de leurs conjoints, mais est difficile à cerner. J'ai en tout cas constaté que les individus manquants avaient bien un lien de parenté avec mes ascendants.
Quelqu'un d'autre a-t-il fait la comparaison?
A+
André
-
Cela fait longtemps que j'ai programmé cela, mais il me semble que les 2 choix ne représentent pas la même chose :
"Ne conserver les individus de patronyme..." ramènera tous les individus qui ont le patronyme choisi, qu'ils soient de la même branche ou non.
Conserver uniquement la branche de l'individu courant conservera des individus d'autre patronyme, mais lié à cet individu.
-
Bonjour,
Je ne parle pas de la sélection utilisant le patronyme, mais de la comparaison entre la méthode que tu as incorporée dans le BOA sous l'option "Conserver uniquement la branche de l'individu courant" et celle introduite par l'option "Suppression complète d'une branche" du menu Outils.
Cette dernière option est l'interface de la PROC_GROUPE. Avec
Mode= Complète
Initialisation=Oui
Témoins=Non
Stricte indifférent
Effet="Suppression des individus absents du groupe"
Les 2 méthodes devraient donner le même résultat. Mais ce n'est pas le cas, ta méthode semble oublier quelques individus.
Sans te demander de te replonger trop loin dans ton programme, pourrais-tu dire qu'elle est la prcédure stockée utilisée?
A+
André
-
De mémoire, c'était PROC_LR_SEL_GROUPE et PROC_LR_MIX_GROUPES.
Pour l'élagage : garder seulement les personnes de nom..., j'utilisais PROC_LR_ELAGAGE_DOSSIER
-
Bonjour Laurent,
C'est bien parce que le temps incite à rester chez soi faire de la généalogie ou du sql...
Le problème vient de PROC_LR_SEL_GROUPE.
A l'intérieur de la boucle
while ((O_NB_GENERATIONS < I_NB_GENERATIONS) and (continuer=1) do
tu vas chercher successivement les ascendants puis les descendants, en forçant "continuer" à 1 ou 0 en fonction du nombre d'individus sélectionnés à la fin de chacune des phases (ascendance puis descendance). Mais s'il n'y a plus de descendance, continuer est remis à 0, même s'il y avait une ascendance (continuer=1), arrêtant de ce fait la recherche des ascendants.
Je proposerai les modifs suivantes:
Après le WHILE initialiser continuer=0
Après chaque phase de recherche des ascendants et descendants, inverser le test en mettant:
if (NOMBRE>0) then continuer=1;
au lieu de
if (NOMBRE<=0) then continuer=0;
Es-tu OK pour que je fasse cette modif dans une prochaine maj de la base?
A+
André
-
Je n'ai pas vérifié, mais no problemo, André ! Tu peux faire la modif.