Si certains veulent bien essayer cette version, le fichier de mise à jour est à télécharger
ICI et la base vide accompagnée de la liste complète des modifications
LA .
Depuis la version b4.017 les évolutions sont les suivantes:
Pour corriger l'état des prénoms qui n'affiche en majuscule que la première lettre du premier prénom, modifications de PROC_LISTE_PRENOM (prénoms tels qu'ils sont dans la fiche, avec la virgule comme séparateur).
Création d'une procédure stockée F_MAJ_SANS_ACCENT(S_IN:varchar(255))S_OUT:varchar(255) mettant en majuscules sans lettres accentuées.
Utilisation dans les triggers Before Insert et Before Update de la table INDIVIDU mettant à jour INDI_TRIE_NOM pour que le premier caractère paraisse toujours dans le répertoire.
Même modif dans PROC_AFTER_IMPORT(dossier, mode), acceptant mode 0 et dossier 0 pour mettre à jour toute la base.
Mise à jour du champ INDI_TRIE_NOM lors de la mise à jour de la base.
Création d'une Fiche Familiale plus courte: Fiche_familiale_une_page.rtm
Modifications pour accélérer le calcul de la descendance et permettre plus facilement la construction d'arbres descendants, sans enfants d'implexes en doublons, avec ces enfants en doublons la première fois, ou avec tous les descendants aussi souvent qu'ils apparaissent.
Création d'une PROC_DERNIER_METIER(clef).
Création PROC_TQ_DESCENDANCE(clef, niveau, Mode) pour remplir la table temporaire TQ_ARBREDESCENDANT. MODE=0=> sans doublons, MODE=1=> une seule fois, MODE=2=> tous.
Utilisation de ces 2 procédures dans PROC_DESCENDANCE.
PROC_VIDE_TABLE suppression des références au dossier lors de l'effacement des tables temporaires.
Suppression des champs TQ_DOSSIER, TQ_ORDRE de la table TQ_ARBREDESCENDANT.
Création index sur TQ_NUM_SOSA.
Même principe pour ascendance:
Création PROC_TQ_ASCENDANCE(clef, niveau, Parqui, Mode) pour remplir la table temporaire TQ_ARBREREDUIT. MODE=0=> sans doublons, MODE=1=> les implexes 1 fois, MODE=2=> tous.
Utilisation dans PROC_ARBRE, PROC_ARBRE_ECRAN, PROC_ARBRE_EXPORT
Modification de PROC_ARBRE_ECRAN pour pouvoir l'utiliser dans la Roue Familiale en affichant TOUS les ancêtres, même lorsqu'ils sont communs à plusieurs ascendants.
Ajout EV_IND_TYPE dans order by de PROC_EVE_IND (idée Lya).
Suppression de la ligne d'entête de colonne de la table de référence REF_DEPARTEMENTS2.txt
Création PROC_GROUPE et PROC_GROUPE_EFFET pour permettre la sélection d'une branche ou l'élagage d'un dossier
Comme vous voyez, il n'y a que quelques modifications directement visibles par les utilisateurs:
l'état des prénoms,
la mise à jour du champ pour le répertoire, une fiche familiale plus courte, amélioration du classement des évènements individuels du même jour.
La F_MAJ_SANS_ACCENT règle le problème du répertoire et peut intéresser Yves pour les recherches d'individus depuis QST.
PROC_TQ_ASCENDANCE et PROC_TQ_DESCENDANCE devraient intéresser les programmeurs des Arbres. Elles permettent de mettre à leur disposition dans des tables temporaires, la liste des ascendants ou descendants, comprenant selon la valeur de MODE, pas d'implexes, un seul niveau d'implexes ou tous les individus ascendants ou descendants, même en double.
La procédure PROC_GROUPE intéressera ceux qui veulent sélectionner une partie de leur dossier ou élaguer une branche. Pour le moment, il faut une requêteur comme le BOA pour l'utiliser.
/*Syntaxe: SELECT * FROM PROC_GROUPE(I_GROUPE,I_INDIVIDU,MODE,STRICTE,TEMOINS,INITIALISATION,EFFET);
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 et les individus pour lesquels l'individu est témoin,
'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.
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.*/
Si la sélection d'une branche complète permet d'être sûr que les éléments non sélectionnés n'ont aucune liaison avec cette branche, Il peut être dangereux de supprimer une branche ascendante ou descendante. Lors de la sélection de la branche ascendante d'un individu, il est vérifié que ni cet individu ni son conjoint, ni les descendants de l'individu et leurs conjoints ne seront sélectionnés, mais ils se peut que les ascendants de ces derniers conjoints le soient. Donc il est nécessaire de vérifier (mais pas facile), si on veut supprimer une branche de cette façon.
Vos expériences seront bien utiles.
Bons tests.
André