Forum Forum Fortifications of the World
A web site about fortifications and freeware programs : Fortifications of the World
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Import Gedcom : Key violation :(

 
Post new topic   Reply to topic    Forum Fortifications of the World Forum Index -> SmartGenealogy
View previous topic :: View next topic  
Author Message
vdenis06



Joined: 19 Apr 2015
Posts: 5

PostPosted: Sun Apr 19, 2015 4:36 pm    Post subject: Import Gedcom : Key violation :( Reply with quote

Bonjour,


Je viens de découvrir Smartgenealogy et je voudrais l'utiliser pour avoir un autre regard sur ma base et notamment les possibilités de fusion.

mon fichier Gedcom vient de l'application webtree (1.6.2) et contient 4841 individus, 1684 familles.

J'essaye d'importer un fichier Gedcom et systématiquement lorsque le compte de famille arrive à 776, j'ai le message "key violation"

j'ai déjà utilisé Gedcom validator pour détecter les incohérences: en dehors de qqs warning sur les documents attachés, pas d'erreur.

Que me suggèrerez vous pour comprendre ce qui se passe à partir de la famille 776 ?

Avez-vous un mode debug qui permettrait de récupérer le n° de ligne dans fichier Gedcom qui pose problème? ou les identifiants associés?

Smartgenealogy V3.0W

merci d'avance pour votre aide

Vincent
Back to top
View user's profile Send private message
ale
Site Admin


Joined: 12 Apr 2005
Posts: 499
Location: Versailles, France

PostPosted: Mon Apr 20, 2015 8:30 pm    Post subject: Reply with quote

Bonsoir

Ouvrez votre fichier Gedcom dans le bloc-notes Windows.
Vous trouverez, souvent vers la fin du ficher, des lignes de la forme "0 @Fxxx@ FAM", avec xxx = une valeur numérique
Cherchez la 776eme ligne de ce format : Ce devrait être elle qui pose problème lors de l'importation.
Comme il s'agit d'une violation de clé, il est possible que vous ayez deux lignes de ce format qui portent le même numéro xxx
Back to top
View user's profile Send private message
vdenis06



Joined: 19 Apr 2015
Posts: 5

PostPosted: Tue Apr 21, 2015 6:51 am    Post subject: Reply with quote

Bonjour,

merci de votre suggestion.

vue la taille de mon fichier Gedcom ... 97000 lignes, j'ai utilisé Notepad++ qui m'a permis de trouver la 776 ième occurence de "^0 @F" Cool

Je ne vois pas d'erreur flagrante:
(@F0887@ est la 776ième de mon fichier)
Code:

0 @F0887@ FAM
1 HUSB @I2640@
1 WIFE @I2641@
1 SOUR @S3@
2 PAGE ACTE N° 9
1 CHIL @I197@
1 CHIL @I2632@
1 CHIL @I2633@
1 MARR
2 TYPE RELIGIOUS
2 DATE 02 MAY 1899
2 PLAC Rore-Sampeyre, Cuneo, Piemonte, Italie
2 ADDR San Nicola
2 SOUR @S20@
3 PAGE n° 9 - p 1307
0 @F1@ FAM
1 WIFE @I2@
1 HUSB @I0497@
1 MARR
2 DATE 16 SEP 2005
2 TYPE Religious
1 CHIL @I3@
1 CHIL @I4@
1 SOUR @S1@


Est-ce que la n° des Famille peut poser un problème ?
on passe de la F0887 à la F1

Code:
Line 82535: 0 @F0886@ FAM
Line 82548: 0 @F0887@ FAM
Line 82572: 0 @F1@ FAM
Line 82586: 0 @F10@ FAM
Line 82598: 0 @F100@ FAM
Line 82606: 0 @F101@ FAM


Si c'est le cas, avez vous une idée pour renuméroter les familles ?

Merci,

Vincent
Back to top
View user's profile Send private message
ale
Site Admin


Joined: 12 Apr 2005
Posts: 499
Location: Versailles, France

PostPosted: Tue Apr 21, 2015 8:43 am    Post subject: Reply with quote

Bonjour

A priori, le fait de passer de F0887 à F1 ne devrait pas poser problème.
Par contre, vérifiez bien que vous n'avez pas dans votre fichier Gedcom deux lignes identiques "0 @F0887@ FAM" ou plus probablement "0 @F1@ FAM", ce qui génèrerait une violation de clé.

- Si c'est le cas, il suffit de remplacer dans votre fichier toutes les occurences de "@F1@" par, par exemple, "@F999991@" (Procéder de même pour tous les doublons qui pourraient exister : "@F10@", "@F100@", etc.)

- Si ce n'est pas le cas, vous pouvez m'envoyer votre fichier Gedcom pour analyse du problème. [mam75 (@) free (.) fr]

Bonne chance
Back to top
View user's profile Send private message
vdenis06



Joined: 19 Apr 2015
Posts: 5

PostPosted: Tue Apr 21, 2015 12:41 pm    Post subject: Reply with quote

re bonjour,

J'ai fais quelques tests et vérifications:
=> aucun doublon dans les référence aux familles ("0 @Fxxx@ FAM)
merci notepad++ pour les recherches sur des expressions régulières

Si je remplace le @F1@ qui venait après le @F0887@ (et bien sur toutes les occurrences dans le fichier)
=> par une valeur numériquement inférieure à 887 ça plante
tests avec 00001 et 000001 et 0000001.

=> par une valeur numériquement supérieure à 887 c'est ok
test avec @F999991@

C'est un peu fastidieux de remplacer toutes les références des familles à la main ...

il semble que votre code prenne en compte la valeur numérique du texte entre @F et @ et soit perturbé par une valeur inférieur à la précédente.

merci de votre aide
Back to top
View user's profile Send private message
vdenis06



Joined: 19 Apr 2015
Posts: 5

PostPosted: Tue Apr 21, 2015 2:22 pm    Post subject: Reply with quote

J'ai continué quelques tests et toutes les ref suivantes posent problème:

F10 vs F0010
F11 vs F0011
F12 vs F0012

Ce n'est sans doute pas cohérent dans la numérotation, mais dans la vraie vie ça arrive suite à quelques fusions pour intégrer des travaux existant.

à priori, c'est les 2 ref (par ex F10 et F0010) sont valides et distinctes suivant les specs de Gedcom 5.5 ou 5.5.1

Pouvez-vous regarder dans votre code comment sont traités les pointeurs XREF, pour lever le doute ?

Cdt,

Vincent
Back to top
View user's profile Send private message
ale
Site Admin


Joined: 12 Apr 2005
Posts: 499
Location: Versailles, France

PostPosted: Wed Apr 22, 2015 3:19 pm    Post subject: Reply with quote

Bonjour

Dans SmartGenealogy, tous les identifiants XREF:FAM sont traités comme des nombres entiers.
On peut importer une famille "0010", mais elle sera écrite dans la base en tant que famille "10".
Il en est d'ailleurs de même pour XREF:INDI, XREF:SOUR et XREF:REPO
Même au cas où XREF:FAM serait traité comme une valeur texte, cela ne dispenserait pas de s'affranchir des doublons quand on veut faire une fusion de deux bases : Chacune des deux bases peut très bien avoir une famille "0010", ce qui induirait un problème de cohérence au moment de la fusion.
C'est ce que je fais dans MergeDB.exe (l'outil de fusion de bases fourni avec SmartGenealogy) : Les familles de la seconde base sont renumérotées pour se placer à la suite de la famille la plus élevée de la première base.
Back to top
View user's profile Send private message
vdenis06



Joined: 19 Apr 2015
Posts: 5

PostPosted: Wed Apr 22, 2015 3:37 pm    Post subject: Reply with quote

ok, merci pour les explications: j'ai donc du ménage à faire!

pour info, les outils comme GEDCOM validator ne détectent pas ce genre de situation.

cdt,

Vincent
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Forum Fortifications of the World Forum Index -> SmartGenealogy All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2002 phpBB Group