Bonsoir,
Le fonctionnement de la procédure PROC_GROUPE a été expliqué lors de son développement pour la b4.021 en février 2006
http://www.ancestrologie.org/forum/index.php?topic=5649.0 et depuis dans un autre fil que je ne retrouve plus.
Voici le texte figurant en tête de cette procédure, qui en explique le fonctionnement.
/*Syntaxe: SELECT * FROM PROC_GROUPE(I_GROUPE,I_INDIVIDU,MODE,STRICTE,TEMOINS,INITIALISATION,EFFET,VERBOSE);
Cette procédure permet de remplir la table temporaire TQ_ASCENDANCE avec des
groupes I_GROUPE d'individus liés avec l'individu I_INDIVIDU.
MODE = 'A' permet de sélectionner les Ascendants de I_INDIVIDU,
'D' permet de sélectionner les Descendants de I_INDIVIDU,
'B' permet de sélectionner l'ensemble de la Branche, I_INDIVIDU compris.
STRICTE = 'Y' ou 'N' (oui ou non)
STRICTE='Y' s'utilise avec MODE 'A' ou 'D' pour exclure de la liste l'individu et son
conjoint ainsi que, les ascendants et leurs conjoints si MODE='D', ou les
descendants et leurs conjoints si MODE='A'.
STRICTE='N' n'empêche pas le sélection, mais les individus qui auraient été éliminés
de la sélection avec STRICTE =Y' sont listés en fin de procédure.
TEMONS= 'Y' sélectionne également les témoins (option très dangereuse),
'N' ne les sélectionne pas.
INITIALISATION = 'Y' vide complètement la table TQ_ASCENDANCE avant de commencer,
'N' n'en supprime aucun enregistrement,
'P' en supprime les enregistrement du même groupe.
EFFET = 'A' Aucun individu n'est supprimé de la base
'E' Elagage: les individus qui ne font pas partie du groupe sélectionné
sont supprimés.
'S' Suppression des individus du groupe sélectionné
Si I_INDIVIDU=0 seule l'action prévue par EFFET est exécutée.
VERBOSE = 'Y' Tous les messages sont émis
'N' Seul le dernier message est émis.
ATTENTION : Quand un individu est sélectionné dans cette liste, ses parents
(sauf l'individu de départ et son conjoint si MODE='A'), ses enfants
(sauf l'individu de départ et son conjoint si MODE='D'), ses conjoints
et témoins (si TEMOINS='Y') le sont également.
Dans la table TQ_ASCENDANCE:
le NIP des individus sélectionnés figure dans TQ_CLE_FICHE,
le N° de groupe est dans TQ_DOSSIER,
le sexe de l'individu est dans TQ_SOSA,
TQ_NIVEAU n'est utilisé que pour des raisons techniques.*/
Le principe est simple: On constitue un groupe d'individus liés à un individu de départ (ascendance, descendance ou les deux) et on peut décider de les supprimer ou de ne garder qu'eux.
Mais le regroupement d'individus de la descendance ou ascendance etc... n'est pas aussi simple qu'il le parait. Un certain nombre de questions apparaissent. Par exemple:
-quand on sélectionne l'ascendance, faut-il exclure les frères et soeurs d'un ascendant?
-faut-il sélectionner les témoins?
La réponse est : tout dépend de ce que l'on veut faire.
Pour simplifier la mise en oeuvre de cette procédure Philippe a fait une interface appelée "Suppression d'une branche...".
L'inconvénient de cette interface, c'est qu'elle supprime les messages d'information et d'avertissement émis par la procédure (VERBOSE='N'). Par contre, la requête exécutée figure dans le bas. Elle peut très bien être copiée et collée dans un requêteur comme le BOA, pour l'exécuter. Modifiez alors le dernier paramètre VERBOSE en 'Y' pour voir tous les messages.
Pour comparer deux individus, l'option existe dans le BOA. Et ceux qui ont installé Firebird serveur peuvent ouvrir deux sessions d'ancestrologie en exécutant une copie de ancestrologie.exe rebaptisée ancestrologie2.exe.
Quand à automatiser la fusion de 2 individus, il en a plusieurs fois été question sur ce forum. Ce n'est pas infaisable informatiquement. Le problème, c'est qu'il y a toujours des "petites" différences entre les individus et que les décisions de "ce que l'on garde" doivent être prises par celui qui est devant l'écran et non par le programme.
A+
André