Ancestrologie - Développement > Développement

Corrections et améliorations des procedures stockées

(1/7) > >>

Gvx:
Bonsoir,



J'ouvre ce fil, afin de pouvoir regrouper les diffrentes propositions d'améliorations consernant les procedures stockées dans la base.



Ceci devrait facilité le travail de PCM lors d'une prochaine mise a jour.



Car  actuellement on trouve des propositions dans divers fils

Gvx:
Voici ma premiere proposition d'amélioration



Procedure: PROC_ORPHELINS



Correction: Dans la version actuelle les individus uniquements associés a des evenements (n'étant ni dans l'ascendance, ni dans la descendance) sont reconnus comme orphelin. Ceci risque d'amener a supprimer l'individu par erreur. Je propose donc de corriger cette anomalie



Il faut modifier la clause Where de la façon suivante: (ajout de la dernière ligne)


--- Code: ---    WHERE KLE_DOSSIER = :IDOSSIER and

          CLE_PERE IS NULL and

          CLE_MERE IS NULL And

          CLE_FICHE not in (select cle_pere from individu) and

          CLE_FICHE not in (select cle_mere from individu) and

          CLE_FICHE not in (select union_mari from T_UNION) and

          CLE_FICHE not in (select union_femme from T_UNION) and

          CLE_FICHE not in (select assoc_kle_associe from  t_associations)


--- Fin du code ---

DDdeBerdeux:
Bonne idée.

Message modifié, voir le 17/9

DDdeBerdeux:
Dans http://www.ancestrologie.org/forum/index.php?topic=4630.0 une proposition pour supprimer l'erreur "multiple rows in singleton select" lors de l'exportation de toutes les images.

A+

André

DDdeBerdeux:
Dans http://www.ybruant.magic.fr/phpBB2a/viewtopic.php?p=30983#30983 je signale que le double affichage des unions dans la fiche individus doit être dû à la procédure PROC_TROUVE_UNION, qui renvoie un enregistrement par evènement "MARR" de l'union. Dans cette utilisation, l'année du mariage n'est utile que pour ordonner les conjoints dans un ordre chronologique. Je propose que l'ordre ne soit pas défini par l'année du mariage, mais par la date du premier évènement familial, ce qui assure un seul enregistrement retourné par union. Si cette procédure n'est pas utilisée ailleurs où les modifications pourraient gêner (mes essais n'ont pas révélés de problèmes), la nouvelle version pourrait être:


--- Code: ---

DECLARE VARIABLE DATE_UNION DATE;

BEGIN

    FOR

    SELECT  i.CLE_FICHE,

            i.NOM,

            i.PRENOM,

            i.DATE_NAISSANCE,

            i.ANNEE_NAISSANCE,

            i.DATE_DECES,

            i.ANNEE_DECES,

            i.SEXE,

            i.CLE_PERE,

            i.CLE_MERE,

            i.NUM_SOSA ,

            u.union_type,

            u.union_clef ,

            MIN(ef.EV_FAM_DATE_YEAR),

            MIN(ef.EV_FAM_DATE)

      FROM  t_union u

            INNER JOIN individu i

               ON  (u.union_mari = :I_CLEF and i.cle_fiche = u.union_femme) OR

                   (u.union_femme = :I_CLEF and i.cle_fiche = u.union_mari)

            LEFT join evenements_fam ef

               on (ef.ev_fam_kle_famille = u.union_clef)

      GROUP BY  i.CLE_FICHE,

            i.NOM,

            i.PRENOM,

            i.DATE_NAISSANCE,

            i.ANNEE_NAISSANCE,

            i.DATE_DECES,

            i.ANNEE_DECES,

            i.SEXE,

            i.CLE_PERE,

            i.CLE_MERE,

            i.NUM_SOSA ,

            u.union_type,

            u.union_clef

      ORDER BY MIN(ef.EV_FAM_DATE_YEAR),MIN(ef.EV_FAM_DATE)

    INTO :CLE_FICHE,

         :NOM,

         :PRENOM,

         :DATE_NAISSANCE,

         :ANNEE_NAISSANCE,

         :DATE_DECES,

         :ANNEE_DECES,

         :SEXE,

         :CLE_PERE,

         :CLE_MERE,

         :NUM_SOSA,

         :TYPE_UNION,

         :UNION_CLEF,

         :ANNEE_MARIAGE,

         :DATE_UNION

    DO

       SUSPEND;

END
--- Fin du code ---


en attendant de trouver mieux (ordre chronologique défini par le premier évènement familial ou la première naissance d'un enfant du couple).

Les conjoints apparaissent dans l'ordre chronologique, le premier en tête. S'il n'y a pas d'évènement familial enregistré, le conjoint apparaît en dernier.

André

PS: réédition le 23/09/2005 pour prendre en compte la date exacte si elle existe au lieu de l'année seule, dans la définition de l'ordre chronologique.

Navigation

[0] Index des messages

[#] Page suivante

Une erreur s'est produite lors du remerciement
Remerciement...
Utiliser la version classique