forum Ancestrologie

Ancestrologie - Plugins et Outils => Création Web => Discussion démarrée par: ilpleutcematin le 03 Novembre 2007 à 12:27:55

Titre: message d'erreur sur table ybtemp
Posté par: ilpleutcematin le 03 Novembre 2007 à 12:27:55
Bonjour,
J'ai un erreur : Message:violation of PRIMARY or UNIQUE KEY constraint "INTE_129" on table "YBTEMP"   
quand je lance la generation de l'export web (descendance) avec plus de 2 generations sur certains ancètres (çad quand ils n'ont pas de parents)
Titre: message d'erreur sur table ybtemp
Posté par: ilpleutcematin le 04 Novembre 2007 à 17:32:32
complément d'informations:
En fait il s'agit d'un problème d'homonymes et pas d'ancètres. Dans certaines descendances, j'ai des homonymes.   
Dès que le programme trouve 2 fois le même nom/prénom il plante.
Je suis en version 2.2.5.1 de création web.
 
Titre: message d'erreur sur table ybtemp
Posté par: DDdeBerdeux le 08 Novembre 2007 à 11:26:21
Bonjour,
L'erreur n'est-elle pas provoquée lorsqu'un individu dans la descendance a eu plusieurs conjoints?
Dans le programme la requête suivante est effectuée:INSERT INTO YBTEMP
SELECT CLE_FICHE, SOSA
FROM PROC_ETAT_DESCENDANCE(:I_CLEF,:I_NIVEAU,:I_DOSSIER)
WHERE ORDRE IS NULL
où la table YBTEMP a pour clef primaire le champ CLE_FICHE.
Or les conjoints ont été ajoutés à la PROC_ETAT_DESCENDANCE  pour les présenter dans l'état de descendance en juillet. Ce qui fait que l'individu devrait être inséré plusieurs fois dans la table YBTEMP s'il a eu plusieurs conjoints.
Pour réparer çà il suffirait d'ajouter "distinct" après le select, mais il serait plus efficace de remplacer cette requête par la suivante:INSERT INTO YBTEMP(cle_fiche,sosa)
select tq_cle_fiche,tq_num_sosa
from proc_tq_descendance(:i_clef,:i_niveau,0,0)
Si Yves choisit cette solution, je pourrais enregistrer cette dépendance dans les commentaires de la procédure, afin d'éviter de tels incidents...
A+
André
Titre: message d'erreur sur table ybtemp
Posté par: ilpleutcematin le 08 Novembre 2007 à 21:23:23
j'ai testé avec d'autres sélection : effectivement le problème intervient quand il y a un individu qui a été marié plusieurs fois
Titre: message d'erreur sur table ybtemp
Posté par: Yves Bruant le 12 Novembre 2007 à 12:31:05
Bonjour,

En fait selon le choix d'export, je fais deux requêtes différentes :

INSERT INTO YBTEMP
SELECT CLE_FICHE, SOSA
FROM PROC_ETAT_ASCENDANCE(:I_CLEF,:I_NIVEAU,:I_DOSSIER, 0)
WHERE IMPLEXE IS NULL

INSERT INTO YBTEMP
SELECT CLE_FICHE, SOSA
FROM PROC_ETAT_DESCENDANCE(:I_CLEF,:I_NIVEAU,:I_DOSSIER)
WHERE ORDRE IS NULL

Que suggères-tu André ?
Titre: message d'erreur sur table ybtemp
Posté par: DDdeBerdeux le 12 Novembre 2007 à 16:16:23
Bonjour,
Si tu veux assurer le fonctionnement correct avec les versions anciennes et actuelles d'Ancestrologie, comme dit plus haut, il suffit pour la descendance d'ajouter "distinct" au select de ta requête.INSERT INTO YBTEMP
SELECT distinct CLE_FICHE, SOSA
FROM PROC_ETAT_DESCENDANCE(:I_CLEF,:I_NIVEAU,:I_DOSSIER)
WHERE ORDRE IS NULL
Pour l'ascendance, il n'y a rien à modifier.
Maintenant, si tu souhaites aussi améliorer la vitesse d'exécution de tes requêtes, mais celà n'est applicable que depuis la V760 b5.044 de début octobre, tu peux les remplacer pour l'ascendance par:INSERT INTO YBTEMP(cle_fiche,sosa)
select tq_cle_fiche,tq_sosa
from proc_tq_ascendance(:i_clef,:i_niveau,0,0)
et pour la descendance par:INSERT INTO YBTEMP(cle_fiche,sosa)
select tq_cle_fiche,tq_num_sosa
from proc_tq_descendance(:i_clef,:i_niveau,0,0)
Ces formes sont plus efficaces, car elles utilisent des procédures qui ne font que les jointures nécessaires au calcul des sosas, sans les jointures aux autres tables permettant de trouver les dates/lieux de naissance/décès, nom des conjoints, date/lieu du mariage, profession etc... affichés dans les états. D'ailleurs, ces proc_tq_ sont appelées dans les proc-etat_ .
A+
André
Titre: message d'erreur sur table ybtemp
Posté par: Yves Bruant le 12 Novembre 2007 à 17:38:37
Merci André.

Comme je suis attaché au bon fonctionnement avec toutes les versions et
que la vitesse d'exécution de CreationWeb n'est pas fondamentale,
je n'ajouterai donc que la clause DISTINCT à la requête.

Je le ferai prochainement.
Titre: message d'erreur sur table ybtemp
Posté par: Yves Bruant le 13 Novembre 2007 à 10:06:51
Bonjour,

La version corrective 2.2.6.0 est disponible. Elle se trouve sur le site à l'adresse :
http://www.yves-bruant.fr/creatweb_telecharge.php
Titre: message d'erreur sur table ybtemp
Posté par: ilpleutcematin le 13 Novembre 2007 à 22:44:06
J'ai installé la version 2.2.6.0 : cela fonctionne parfaitement.
Merci à tous les deux.
Et surtout merci pour votre réactivité : le problème a été corrigé en une semaine.
Merci beaucoup.