Ancestrologie - Développement > Développement

Mise à jour table de référence des témoins

(1/3) > >>

DDdeBerdeux:
Dans ce fil http://www.ancestrologie.org/forum/index.php?topic=4981.0&postdays=0&postorder=asc&start=0

un problème ennuyeux est dû aux modifications de la table REF_RELA_TEMOINS qui ne reconnaît qu'une seule liste de tags. Ces tags sont utilisés lors des importations et exportations gedcom. Comme ces tags ont changé dans la base fournie avec Ancestrologie (peut-être en 2005, ou en avril la base seule téléchargée sur le site était-elle encore à l'ancienne version? j'ai 2 bases différentes!), les personnes équipées d'une nouvelle version, ne récupèrent pas tous les types de témoins exportés depuis une ancienne version et réciproquement. Apparemment, Héredis ne connait que les anciens tags.

Pour règler ce problème, j'ai ajouté à la table de référence 2 colonnes pour y enregistrer les anciens et les nouveaux tags. Lors de la mise à jour, une procédure remplit les 2 colonnes. Et une procédure exécutable depuis le BOA permet de définir l'utilisation de l'une ou l'autre colonne. En prime cette procédure fait les corrections "parrain/marraine" et "cousin/cousine" en fonction du sexe de l'individu associé.

Est-ce que çà intéresserait quelqu'un qu'on demande à PCM d'incorporer çà dans une prochaine mise-a-jour de la base?

A+

André

Roger 1:
salut andré,

Pourquoi pas. Apparemment tu n'as pas beaucoup d'amateurs.

@+

Lya:

--- Citation de: "DDdeberdeux" ---Comme ces tags ont changé dans la base fournie avec Ancestrologie (peut-être en 2005, ou en avril la base seule téléchargée sur le site était-elle encore à l'ancienne version? j'ai 2 bases différentes!), les personnes équipées d'une nouvelle version, ne récupèrent pas tous les types de témoins exportés depuis une ancienne version et réciproquement.
--- Fin de citation ---


C'est plus compliqué que ça encore. L'ancienne table REF_RELA_TEMOINS (19 lignes) étant incomplète, il y a eu de nombreuses demandes de personnalisations. On nous a répondu qu'il était possible d'ajouter soi-même le type de relation désiré en modifiant le fichier texte et l'important dans la base avec l'outil TablesRef.exe. Méthode très efficace et longuement expliquée à tous ceux qui le souhaitaient.

cf http://quidancestro.free.fr/archive_forum/viewtopicafa8.html?t=3116



Ce qui fait qu'il n'y a pas 2 versions de la table en circulation mais bien une multitude... la mienne comporte 38 entrées avec la relation "voisin" que je désirais (je sais, certains disent qu'il ne devrait pas y avoir ce genre de relation, mais moi je le veux !  8) ) Ensuite, Aquablue a fourni une table de 39 lignes assez complète pour que la plupart des utilisateurs s'en satisfassent.



Bien sûr, il a été expliqué que si on modifiait la table soi-même, il fallait s'assurer d'avoir la même lorsqu'on importe un gedcom que lorsque on l'a créé, sinon on subit les tracas que tu as décrit. Evidemment, avec le temps certains ont du oublier qu'ils avaient modifié la table, mais cela n'apparait pas tant qu'on ne change pas de version de BASE...  :wink:



Ta procédure règle le problème pour la différence entre les tables 1 et 2, mais que se passera t-il pour ceux qui ont des tables personnalisées ? Pourront-ils les injecter à nouveau avec TablesRef.exe ?

Gvx:

--- Citation de: "Lya" ---

cf http://quidancestro.free.fr/archive_forum/viewtopicafa8.html?t=3116


--- Fin de citation ---




 :o Ouaah une une partie des anciens messages 8)  8)



Merci Amandine :wink:



Que deviendrions nous sans toi :?:  :D  :D

DDdeBerdeux:
Comme je vois qu'il y a quand même quelques uns qui lisent  et réagissent sur ce forum, je remets ce que j'écrivais en mp à Lya:


--- Citer ---En ce qui concerne les modifications des tables de références, j'ai commencé à dire ce que j'en pense http://www.ancestrologie.org/forum/index.php?topic=4543.0&start=12 . S'agissant de tables de références, je ne comprend pas que l'on parle de personnalisation de ces tables, Il y a à mon sens incompatibilité entre les 2 termes. Si tu as utilisé les mêmes tags que ceux d'ancestrologie, avec le même sens, il ne devrait pas y avoir de problème lors d'un transfert par gedcom. Mais si dans l'exemple de la table des témoins, tu n'as pas pour un type de témoins le même code (REF_RELA_CODE), qui est comme je l'explique dans le fil ci-dessus le code mémorisé dans les associations, les mises à jour de ces tables peut te poser des problèmes (oncle à la place de tante etc..).
--- Fin de citation ---
Dans la b4.005, j'ai effectivement mis du code pour modifier la table REF_RELA_TEMOINS.


--- Code: ---CREATE PROCEDURE "PROC_MAJ_TEMOINS"

AS

/* procédure provisoire pour mettre à jour les tables REF_RELA_TEMOINS et T_ASSOCIATIONS*/

DECLARE VARIABLE I INTEGER;

begin

  select count(REF_RELA_TAG) FROM REF_RELA_TEMOINS

  INTO :I;

  IF (I > 30) THEN

    BEGIN

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = REF_RELA_TAG;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = REF_RELA_TAG WHERE REF_RELA_CODE < 22;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Godparent' WHERE REF_RELA_CODE = 1;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Godparent' WHERE REF_RELA_CODE = 2;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Medecin' WHERE REF_RELA_CODE = 6;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Membre de la famille' WHERE REF_RELA_CODE = 7;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Ami de la famille' WHERE REF_RELA_CODE = 8;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Militaire' WHERE REF_RELA_CODE = 9;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Cousine' WHERE REF_RELA_CODE = 11;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Grand-Pere' WHERE REF_RELA_CODE = 12;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Grand-Mere' WHERE REF_RELA_CODE = 13;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Mere' WHERE REF_RELA_CODE = 14;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Pere' WHERE REF_RELA_CODE = 15;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Frere' WHERE REF_RELA_CODE = 17;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Soeur' WHERE REF_RELA_CODE = 18;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Informant' WHERE REF_RELA_CODE = 20;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = 'Attending' WHERE REF_RELA_CODE = 21;

    END

  ELSE

    BEGIN

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_A = REF_RELA_TAG;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = REF_RELA_TAG;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Godfather' WHERE REF_RELA_CODE = 1;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Godmother' WHERE REF_RELA_CODE = 2;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Doctor' WHERE REF_RELA_CODE = 6;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Family''s member' WHERE REF_RELA_CODE = 7;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Family''s friend' WHERE REF_RELA_CODE = 8;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Soldier' WHERE REF_RELA_CODE = 9;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Cousin' WHERE REF_RELA_CODE = 11;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Grandfather' WHERE REF_RELA_CODE = 12;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Grandmother' WHERE REF_RELA_CODE = 13;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Mother' WHERE REF_RELA_CODE = 14;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Father' WHERE REF_RELA_CODE = 15;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Brother' WHERE REF_RELA_CODE = 17;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Sister' WHERE REF_RELA_CODE = 18;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Declarant' WHERE REF_RELA_CODE = 20;

      UPDATE REF_RELA_TEMOINS SET REF_RELA_TAG_N = 'Person present' WHERE REF_RELA_CODE = 21;

    END

      FOR SELECT  a.ASSOC_CLEF FROM T_ASSOCIATIONS a, INDIVIDU i

          WHERE i.CLE_FICHE = a.ASSOC_KLE_ASSOCIE

            AND a.ASSOC_TYPE = 1

            AND i.SEXE = 2    /*marraine*/

          INTO :I

      DO

        UPDATE T_ASSOCIATIONS SET ASSOC_TYPE = 2 WHERE ASSOC_CLEF = :I;

      FOR SELECT  a.ASSOC_CLEF FROM T_ASSOCIATIONS a, INDIVIDU i

          WHERE i.CLE_FICHE = a.ASSOC_KLE_ASSOCIE

            AND a.ASSOC_TYPE = 2

            AND i.SEXE = 1    /*parrain*/

          INTO :I

      DO

        UPDATE T_ASSOCIATIONS SET ASSOC_TYPE = 1 WHERE ASSOC_CLEF = :I;

      FOR SELECT  a.ASSOC_CLEF FROM T_ASSOCIATIONS a, INDIVIDU i

          WHERE i.CLE_FICHE = a.ASSOC_KLE_ASSOCIE

            AND a.ASSOC_TYPE = 10

            AND i.SEXE = 2    /*cousine*/

          INTO :I

      DO

        UPDATE T_ASSOCIATIONS SET ASSOC_TYPE = 11 WHERE ASSOC_CLEF = :I;

      FOR SELECT  a.ASSOC_CLEF FROM T_ASSOCIATIONS a, INDIVIDU i

          WHERE i.CLE_FICHE = a.ASSOC_KLE_ASSOCIE

            AND a.ASSOC_TYPE = 11

            AND i.SEXE = 1    /*cousin*/

          INTO :I

      DO

        UPDATE T_ASSOCIATIONS SET ASSOC_TYPE = 10 WHERE ASSOC_CLEF = :I;



end

 ^

COMMIT WORK ^

SET TERM ;^



EXECUTE PROCEDURE "PROC_MAJ_TEMOINS" ;

DROP PROCEDURE "PROC_MAJ_TEMOINS" ;
--- Fin du code ---
Ce code identifie comme ancienne ou nouvelle la liste existante selon le nombre d'enregistrements, afin de la copier dans la bonne colonne. Et j'ai pris 30 comme limite inférieure.

Déjà là j'ai tout faux si certains ont ajouté plus de 9 types à l'ancienne liste.

Ensuite si la liste est la nouvelle, je copie les 21 premiers enregistrements dans la colonne des "anciens tags" et j'en modifie 13 dont le libellé n'était pas identiques dans l'ancienne liste.

Si la liste était l'ancienne, je la copie dans "nouveaux tags" et je modifie les 13 modifiés dans la nouvelle.

En prime, je vais corriger d'éventuelles erreurs parrain/marraine ou cousin/cousine dans la tables des associations.

Je pense que je vais être obligé de supprimer cet automatisme et de ne garder que la création des 2 colonnes supplémentaires et de la procédure permettant le choix. Je peux mettre le fichier REF_RELA_TEMOINS2.txt qui a les 2 colonnes supplémentaires dans le répertoire \tables de references, laissant à l'utilisateur le soin de le modifier selon ce qu'il a déjà fait, de le renommer sans le 2 final à la place de l'ancien et de le réimporter par tablesreference.exe. Ceux qui ont été capables de modifier leur liste sont capables de faire çà, mais ceux qui ne l'ont jamais fait? Fournir un script séparé pour eux? Possible mais pas simple à diffuser et faire comprendre la manip supplémentaire.

Je crains que nous traînions cette incompatibilité entre les différentes installations pendant longtemps :evil:

Une réelle mise à jour ne serait envisageable que si vous avez utilisé les tags "officiels". Si non, je me demande s'il serait bien venu d'exiger de PCM le respect de la norme gedcom  :oops:

A+

André

Navigation

[0] Index des messages

[#] Page suivante

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