Auteur Sujet: Demande d'aide pour l'utilisation du BOA  (Lu 3450 fois)

plus minus reset

0 Membres et 1 Invité sur ce sujet

Hors ligne BLefebvre

  • AncestroExpert
  • *****
  • Messages: 885
Demande d'aide pour l'utilisation du BOA
« le: 13 Octobre 2007 à 14:12:36 »
Etant nul en SQL, j'appelle à l'aide.
Suite à l'import d'un gedcom, je me retrouve avec des personnes ayant un évènement décès comportant une notes contenant le texte
à l'age de nn ans
où nn varie évidemment suivant l'age du décès. Toutes ces personnes ont une date de naissance et une date de décès, ce qui fait que cette notes est inutile.
Je voudrais supprimer toutes ces notes, et uniquement celles-là. Comment faire, si tant est que celà est possible.

Merci d'avance.
XP SP3 V1360 B5.130
 

Hors ligne DDdeBerdeux

Demande d'aide pour l'utilisation du BOA
« Réponse #1 le: 13 Octobre 2007 à 16:40:23 »
Bonjour,
Faire la modification directement en supprimant les notes des enregistrements où on trouve les mots recherchés, est possible, mais sûrement risquée. Il peut en effet y avoir d'autres commentaires dans ces notes, qu'il serait intéressant de garder. Une première requête devrait permettre de visualiser les individus concernés et s'il ne sont pas trop nombreux de corriger manuellement les événements décès correspondants:
select e.ev_ind_kle_fiche as CLE_FICHE
      ,i.nom
      ,i.prenom
      ,e.ev_ind_comment
from evenements_ind e
inner join individu i on i.cle_fiche=e.ev_ind_kle_fiche
                      and i.kle_dossier=3
where e.ev_ind_type='DEAT'
  and e.ev_ind_comment containing 'à l''âge de'
Remplacer le 3 par ton n° de dossier.
Dans cet exemple, on sélectionne les individus par leurs événements décès si le champ ev_ind_comment contient la chaîne de caractères comprise entre les simples cotes (apostrophes). Remarque que si l'apostrophe fait partie de la chaîne recherchée, elle est doublée (2 apostrophes à se suivre).
Je précise ceci parce que si le texte "à l'âge de" n'est pas d'origine automatique, il y a très probablement des variations dans l'écriture de ce texte (les a avec ou sans accent par exemple) qui obligera à faire plusieurs recherches en remplaçant ce texte, à moins de modifier la fin de la requête pour ajouter les variantes:where e.ev_ind_type='DEAT'
  and (e.ev_ind_comment containing 'à l''âge de'
       or e.ev_ind_comment containing 'a l''âge de'
       or e.ev_ind_comment containing 'à l''age de'
       or e.ev_ind_comment containing 'a l''age de')
Si tu connais le n° de l'import, il est également possible de restreindre la sélection aux individus de cet import.
Connaissant le NIP d'un individu de cet import, tu peux obtenir le n° de l'import parselect i.id_import_gedcom
from individu i
where i.cle_fiche=NIP
ou en listant la table T_IMPORT_GEDCOMselect *
from t_import_gedcom
A la première requête ajoutes alorsand i.id_import_gedcom=le n° relevé.
Si tu trouves une sélection dont tu es sûr qu'il n'y a aucun inconvénient à supprimer toutes les notes de l'événement décès, on pourra alors l'utiliser pour faire cette suppression automatiquement
A+
André
Une application pleinement satisfaisante est toujours complétée par une mise à jour buggée. (Loi des Mises à Jour)
 

Hors ligne BLefebvre

  • AncestroExpert
  • *****
  • Messages: 885
Demande d'aide pour l'utilisation du BOA
« Réponse #2 le: 13 Octobre 2007 à 18:01:01 »
J'ai passé la première requête et la variante orthographique. J'ai le même résultat : 2801 lignes (c'était vraiment un gros gedcom). Il n'y a pas de scories avec des données autres que l'âge. On peut donc y aller gaiement pour la suppression (après sauvegarde évidemment).
XP SP3 V1360 B5.130
 

Hors ligne DDdeBerdeux

Demande d'aide pour l'utilisation du BOA
« Réponse #3 le: 13 Octobre 2007 à 18:53:39 »
Dans ce cas:update evenements_ind
set ev_ind_comment=null
where ev_ind_clef in
(select e.ev_ind_clef
 from evenements_ind e
 inner join individu i on i.cle_fiche=e.ev_ind_kle_fiche
                      and i.kle_dossier=3
 where e.ev_ind_type='DEAT'
   and (e.ev_ind_comment containing 'à l''âge de'
        or e.ev_ind_comment containing 'a l''âge de'
        or e.ev_ind_comment containing 'à l''age de'
        or e.ev_ind_comment containing 'a l''age de'))
devrait marcher en remplaçant 3 par ton n° de dossier.
A+
André
Une application pleinement satisfaisante est toujours complétée par une mise à jour buggée. (Loi des Mises à Jour)
 

Hors ligne BLefebvre

  • AncestroExpert
  • *****
  • Messages: 885
Demande d'aide pour l'utilisation du BOA
« Réponse #4 le: 15 Octobre 2007 à 11:28:43 »
Ca marche. Un grand merci.
Je crois que je vais investir dans un bouquin du style SQL pour les nuls. Ca me fera grand bien.
XP SP3 V1360 B5.130
 

Hors ligne BLefebvre

  • AncestroExpert
  • *****
  • Messages: 885
Demande d'aide pour l'utilisation du BOA
« Réponse #5 le: 24 Octobre 2007 à 17:43:20 »
J'ai maintenant le même problème, mais dans l'onglet INFOS de la fiche individuelle.
J'ai bien essayé de le faire moi même, mais je me suis perdu dans les tables et les colonnes. Alors, si tu peux encore m'aider, merci d'avance.
« Modifié: 24 Octobre 2007 à 18:09:27 par BLefebvre »
XP SP3 V1360 B5.130
 

Hors ligne DDdeBerdeux

Demande d'aide pour l'utilisation du BOA
« Réponse #6 le: 24 Octobre 2007 à 21:25:17 »
Bonsoir,
Déjà pour vérifier que la sélection n'effacera pas d'autres Infos que celles des individus concernés:
select i.cle_fiche
      ,i.nom
      ,i.prenom
      ,i.date_naissance
      ,i.date_deces
      ,i.age_au_deces
      ,i.comment
from individu i
where i.kle_dossier=1
  and (i.comment containing 'à l''âge de'
       or i.comment containing 'a l''âge de'
       or i.comment containing 'à l''age de'
       or i.comment containing 'a l''age de')
S'il n'y a pas d'erreurs, vous pouvez alors vider les champs Infos par:
update individu i
set i.comment=null
where i.kle_dossier=1
  and (i.comment containing 'à l''âge de'
       or i.comment containing 'a l''âge de'
       or i.comment containing 'à l''age de'
       or i.comment containing 'a l''age de')
Au cas où la sélection est trop large il faut en sortir les individus de cle_fiche 123, 456 et 789 par exemple, ajoutez à la clause where la ligne suivante:
and i.cle_fiche not in (123,456,789)
Vous pouvez ajouter ou enlever (un seul suffit entre parenthèses) autant de ",clé" que vous le voulez. Mais s'il y en a trop, il serait plus intéressant d'affiner la sélection, en la complétant par le code importation par exemple, comme vu précédemment.
A+
André
Une application pleinement satisfaisante est toujours complétée par une mise à jour buggée. (Loi des Mises à Jour)
 

Hors ligne BLefebvre

  • AncestroExpert
  • *****
  • Messages: 885
Demande d'aide pour l'utilisation du BOA
« Réponse #7 le: 25 Octobre 2007 à 16:08:59 »
Non seulement ça a très bien fonctionné, mais j'ai réussi à faire une troisième requête moi-même.
Merci beaucoup
XP SP3 V1360 B5.130