forum Ancestrologie
Ancestrologie - Le Programme => Ancestrologie - Rapports d'anomalies => Discussion démarrée par: Bruno T. le 09 Mai 2005 à 19:11:29
-
Anomalie 20
L'estimation de l'âge n'est pas homogène : elle change selon le mois de l'année mais pas la date de naissance
Localisation : Fenêtre principale
Type : Ergonomie
Bonjour, au sujet de cette anomalie j'ai fait ce début d'analyse :
J'ai parcouru les fils débattant ce pb:
http://www.ancestrologie.org/forum/index.php?topic=4025.0
http://www.ancestrologie.org/forum/index.php?topic=3823.0
http://www.ancestrologie.org/forum/index.php?topic=2082.0[/list]
Les avis divergent sur la manière d'afficher l'âge, et plusieurs options sont possibles:
à partir de l'écart des années:
1-la différence d'années entières
- à partir de l'écart en jours divisé par 365,25
2-le nombre d'années arrondi
3-le nombre d'années tronqué
4-le nombre d'années en valeurs décimales
5-la différence d'années entières, et le nombre de mois entier[/list]
Ce que fait Ancestrologie:
- pour les fiches individu est appliqué la méthode du point 1 avec
[Proc_Age_Individu] où Age = Année_Décés - Année_Naissance
- pour la fenêtre anniversaire, c'est le point 2 avec Age = Date_Courante - DateEvenementNaissance / 365.25, la donnée Age étant un entier, la conversion fait un arrondi[/list]
Et pour le reste :
- Le point 3 pourrait en séduire plus d'un, car 'tronqué' veut dire que 47,3 ou 47,9 donne 47, il est souvent d'usage de dire que tant qu'on n'a pas l'âge.... on l'a pas!
- Le point 4 ne me semble pas satisfaisant. Qui se voudrait affubler d'un age du style " 45,7 ans ", bien que l'on dise couramment " 38 ans et demi "
-
Je préfère nettement mieux le point 5, on aurait par exemple " 47 ans et 11 mois " [/list]
Le tableau ci-dessous est peut-être plus clair:
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fmsbt.free.fr%2Fancestro%2Fautres%2FAncestro_ComparAge.gif&hash=eaaa6a62811ffd0e1f24f8bdf6acae0ca8ba6b5a)
Vos avis :?:
-
j'suis tenté plutôt par les points 2, 3 ou 5.
le points 5 est bien, mais il surcharge un peu trop l'écran.
Entre les points 2 et 3 je prefère le 2, mais j'suis p'tre un peu trop matheux, pour moi quand je vois 47 ans et 8 mois, je comprends 48 ans et non 47 !
-
Je préfère nettement mieux le point (4) 5, on aurait par exemple " 47 ans et 11 mois "
Après lecture, je suis de ton avis...
Cette solution est d'autant plus interessante qu'elle permet d'obtenir l'age, en particulier, pour les enfants morts avant leur première année.
-
Le point 5 aussi pour moi. Ou à défaut le point 3.
Pas le point 2, pour moi c'est la date anniversaire qui compte, pas la "relative proximité". :mrgreen:
Super travail :!:
-
Super travail :!:
Merci :wink:
-
Très bonne idée de sondage : merci !!!
Je suis également d'accord avec le 5 ... c'est le plus réaliste de tous. Chacun pourra aussitôt arrondir mentalement en voyant 47 ans et 11 mois, mais cela reste 47 ans !
Merci d'avoir si bien présenté le problème et ses solutions (https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fcecillon.free.fr%2FZ%2Fasourire.gif&hash=118c403f9ec6358fb28b86967b3b11a759ced1b8)
-
mais cela reste 47 ans !
:lol:
-
En fait, je crois que les femmes tiennent beaucoup à avoir 47 ans jusqu'au 08/05/2005... :lol: :wink:
-
:shock: je pense à truc subitement ! Pour le mois ..... non, non pas les jours :?
Ok, je tranche: le mois sera donc tronqué :P
bons, j'arrête.... ça tourne au mélo... :wink:
En fait, je crois que les femmes tiennent beaucoup à avoir 47 ans jusqu'au 08/05/2005...
j'aurais p'tet du faire unsondage pour les hommes et un pour les femmes :lol:
-
Bonsoir,
Pour moi egalement le point 5 me semble le plus interressant. L'autre solution qui aurait mon assentiment serait le point 3.
Est-ce possible? voir la reponse de PCM ICI (http://www.ancestrologie.org/france/index.php). Il utilise uniquement les champs "Année" dans la base
-
j'aurais p'tet du faire un sondage pour les hommes et un pour les femmes :lol:
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Falbalux.free.fr%2Fsmiley%2Foffusque.gif&hash=72fd9577022d18933dcdbb62c80364c568b93976)
-
Est-ce possible? voir la reponse de PCM ICI (http://www.ancestrologie.org/france/index.php). Il utilise uniquement les champs "Année" dans la base
Je ne crois pas, des champs date sont utilisés pour le calcul de l'age dans les anniversaires avec PROC_ANNIVERSAIRE (cf mon analyse au début) :shock:
-
Pour moi, mettre le nombre de mois n'a pas beaucoup de sens puisque,dans les documents que l'on trouve, ils ne sont jamais indiqués.
Ce n'est justifié que pour les enfants dans leur première année. Mais alors, où s'arrréter? Dans le premier mois de la vie, certains réclameront de mettre la semaine, et dans la première semaine, le nombre de jours.
On tronque l'année à la partie entière, et c'est bien comme ça. Pourquoi se casser le tête.
-
Il s'agit d'un compromis... :wink:
-
Moi je vote pour le 2 car aucun logiciel n'accepte lesz mois derrière les années et puis je trouve que cela n'est pas d'une importance capitale pour le logiciel, si ce n'est que de donner du travail sup a Philippe :wink:
-
Moi je vote pour le 2 car aucun logiciel n'accepte les mois derrière les années
As-tu bien cerné la différence entre les points 2 et 3, pour mémoire :arrow:
2 --> 47 ans et 7 mois deviens 48 ans, 47 ans et 3 mois = 47 ans, on arrondi à l'entier le plus proche plus près
3 --> 47 ans et 7 mois ou 47 et 3 mois deviennent 47 ans, on supprime la partie décimale
-
Pour ma part le 3 me satisfait
-
Si je peux me permettre, moi je vote en premier 5, et en second choix .
En réalité, on n'utilise le mois que pour des ages faibles (jusqu'à 2 ou 3 ans), ensuite c'est l'année écoulée.
Dans tous les cas, il y a un problème. Aujourd'hui, c'est le champ DATE_YEAR qui est utilisé pour calculer l'âge (méthode 1). Il faudrait utiliser le champ DATE. Mais on peux voir dans la table EVENEMENTS_IND, que ce champ n'était (et ne peut être) renseigné que si la date saisie (champ DATE_WRITEN) est effectivement traduisible en date. Comment traduire est 1970? ou 1970?, par 01/01/1970?
En écrivant, je viens de voir que la date "traduite" dans le champ DATE est effectivement fausse (date du jour de saisie?) pour des évènements autres que BIRT ou DEAT, mais cette anomalie est déjà signalée.
Par contre une anomalie est provoquée par le mode de calcul actuel. Si un enfant décède par exemple le 1/07/1900, peu après sa naissance mais date précise inconnue, quelle date mettez-vous pour éviter l'apparition du message d'erreur "Décès avant sa naissance"?
-
Mon second choix est 3. Il a été oublié tout à l'heure.
-
Si je peux me permettre...
Si, à mon tour, je peux me permettre :wink: , tu peux totalement te le permettre : tous les avis sont bienvenus... :wink::wink::wink:
PS : un tit truc...
Quand un auteur oublie ou souhaite modifier un élément dans son message, il a toujours la possibilité de le faire en utilisant le bouton (https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fwww.ybruant.magic.fr%2FphpBB2a%2Ftemplates%2FsubSilver%2Fimages%2Flang_french%2Ficon_edit.gif&hash=22ac63028b63fd974aabde1d6c82f7190ec77337), en haut à droite du message envoyé... :wink:
-
Où est le bouton "EDITER", je ne le vois pas? Je sais je suis bigleux mais quand même :x
J'en profite pour complèter, mais là çà devient une suggestion d'amélioration. On pourrait établir une règle qui me semble proche de la coutume pour l'âge. On parle en jours jusqu'à 2 semaines, en semaines jusqu'à 2 mois, en mois jusqu'à 2 ans, en années au-delà (j'arrête, on n'en est pas encore aux siècles). :)
Pas simple à programmer, mais juste à faire une fois et conserver dans un champ varchar(40), lequel permettrait de présenter un commentaire (genre "environ") si la conversion en âge est impossible (pb de conversion de date).
A méditer?
Je reprend, J'AI TROUVE LE BOUTON EDITER. (faudra que je change de lunettes)
-
Comme indiqué le bouton "Editer" est en haut à droite de ton message.
Mais comme seul l'auteur d'un message peut "Editer" son message. Le bouton "Editer" de tes messages n'apparait que si tu t'es connecté.
-
Pas simple à programmer,
Je ne te le fais pas dire car il faut également rajouter un paquet de variables à transmettre entre les proc et la form, ou réécrire le calcul dans chaque cas où l'on doit l'afficher :roll: mais juste à faire une fois et conserver dans un champ varchar(40)
he non...faut le recalculer à chaque affichage, car l'age est généré en fonction de la naissance et du décés si la personne est décédée ..... sinon en fonction de la date courante, et en plus on y perdrait en clarté de programmation car il faudrait réactualiser (dans le doute) cette donnée à chaque saisie potentiellement concernée :arrow: mais bon l'espoir fait vivre :wink:
:idea: Au vu de l'évolution des réponses au sondage, je suggèrerai la chose suivante:
[list=1]Dans un 1er temps: Corriger le calcul au niveau des fiches, pour afficher l'écart entre les dates en années entières en ne gardant que la partie entière de la division par 365.25 de l'écart en jours (comme dans anniversaire) et Corriger dans anniversaire pour ne garder que la partie entière du résultat avant d'affecter à age. (Dans le cas où les champs dates de la base ne sont pas renseigné, on fera simplement la différence entre les années)
Dans un avenir à définir: améliorer en rajoutant une data d'échange pour transmettre le nombre de mois, calculés avec la même base[/list:o]:arrow: L'intêret de ce phasage:
Dans un délai court, de ne plus afficher un age exagéré, c'est souvent fort déplaisant pour des utilisateurs (trices :) ) de se sentir vieilli :?
La modification ne concerne que 2 modules à priori
Après de plus mûres réflexions, pour appréhender le meilleur compromis entre lourdeur de développement et complexité de fonctionnalité, en clair ne pas développez une usine à gaz pour rien
Mais n'hésitez pas à continuer d'apporter votre eau au moulin, tous les avis sont les bienvenus :wink:
-
j'apporte de l'eau au moulin... je constate que les donnees geneanet de moins de 100 ans non accessibles au public le deviennent (accessibles) automatiquement si l'individu concerne devient centenaire. il doit donc se passer un calcul automatique quelque part, ce qui devrait nous donner de l'espoir pour cette anomalie :wink:
-
C'est ce que je dis: on ne peux se permettre de stocker l'age comme proposé par DDdeberdeux, car il évolue
Que ce soit généanet, Ancestrologie ou d'autres, l'age doit systématiquement être recalculé àavnt l'affichage
-
D'après
floor retourne l'entier inférieur du nombre value . La valeur retournée est un nombre à virgule flottante, ( float ) car ces nombres peuvent être plus grands que les entiers.
Exemple
floor(4.3); // 4
floor(9.999); // 9
Je fais la suggestion suivante pour les anniversaires:
au lieu de: (CURRENT_DATE - naissance.ev_ind_date) /365.25 as AGE
je mettrai: floor((CURRENT_DATE - naissance.ev_ind_date) /365.25) as AGE
Qu'en pense Philippe??
-
:shock: Nouvelles réflexions ... la nuit porte conseil :!: :wink:
J'étais en train de vérifier mes dires d'hier soir, car j'avais un doute:
la solution que je proposais (et qui fonctionne) rapporte bien l'âge juste, mais calculé à la date du jour courant
:arrow: ça conviendrait pour les affichages d'age courants
:arrow: mais ça ne convient pas , à mon avis, pour la fenêtre anniversaire, où je pense que l'on attend effectivement l'age qui sera atteint à la date d'anniversaire de l'année en cours, peu importe quel jour on est aujourd'hui..... donc mea culpa :oops:
En fait, certaines personnes ont parlé d'erreur à partir d'août, mais non, dans la fenêtre anniversaire, ce qui se passe:
:arrow: comme je l'ai dit auparavant, l'age est calculé juste à partir de la date courante, puis arrondi
:arrow: donc, jusqu'à une date correspondant à la date courante + 6 mois, soit la date naissance est antérieure à la date courante et le résultat est juste, soit elle est postérieure et le résultat est que jusqu'à une date correspondant à la date courante + 6 mois, le calcul renvoi une valeur >age+0,5 et on a age+1, mais dés qu'on boucle à plus de 6 mois on a un résultat <age+0,5 et on obtient age réel à aujourd'hui, mais pas à la date d'anniversaire.
:arrow: par exemple pour aujourd'hui 11/05, la bascule se voit au 11 novembre :!:
Pourquoi on parlait d'aout.... tout simplement cela se passait en janvier :wink:
-
:D Donc, si vous êtes d'accord pour que l'âge de la fenêtre d'anniversaire indique l'age à la date d'anniversaire, je propose la correction suivante de PROC_ANNIVERSAIRE:
FOR SELECT DISTINCT
individu.cle_fiche,
individu.nom,
individu.prenom,
naissance.ev_ind_date,
individu.date_deces,
individu.sexe ,
extract(DAY from naissance.ev_ind_date)as JOUR,
/* Modifié par Bruno T. (macpc) le 11/05/2005 */
/* (CURRENT_DATE - naissance.ev_ind_date) /365.25 as AGE restitue un age
d'anniversaire erroné si la date de naissance a plus de 6 mois de différence
avec la date courante, la différence des année ci dessous donne un age
correcte à le date d'anniversaire */
extract(YEAR from CURRENT_DATE)-extract(YEAR from naissance.ev_ind_date) as AGE
FROM individu,
evenements_ind naissance
WHERE naissance.ev_ind_type = 'BIRT'
AND naissance.ev_ind_date is not null
AND :a_Mois = extract(MONTH from naissance.ev_ind_date)
AND individu.cle_fiche = naissance.ev_ind_kle_fiche
AND ((individu.annee_deces is null and
/* MD - Pour les vivants limitation à 110 ans */
(individu.annee_naissance > (extract(YEAR from CURRENT_DATE) - 110)) and :I_MODE = 0)
OR (:I_MODE = 1))
AND naissance.ev_ind_kle_dossier = :I_DOSSIER
ORDER BY 7,4
INTO
:CLE_FICHE,
:NOM,
:PRENOM,
:DATE_NAISSANCE,
:DATE_DECES,
:SEXE,
:JOUR,
:AGE
DO
SUSPEND;
end
Qui donne le résultat suivant:
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fmsbt.free.fr%2Fancestro%2Fautres%2FAncestro_AgeAnnivCorrig.gif&hash=f07c01ea1794bc5eb22b2d1a944225836ef4bcb8)
-
BRAVO pour l'analyse et le résultat Bruno !!! (https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Falbalux.free.fr%2Fsmiley%2Fapplaudit.gif&hash=e4bc01211cb2789f57154334d024bdee2993aa71)
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Falbalux.free.fr%2Fsmiley%2Fsalut_chapeau.gif&hash=86c494144e9f0470d7ec64e727b1fde8c4839e7c)
-
Merci :)
Pour l'age des fiches, je patine encore un peu :roll:
Y me manque surement un bout :shock:
-
Pour info:
La beta 289 intègre la modif pour la fenêtre anniversaire :wink:
-
Merci beaucoup Bruno pour cette analyse, tout ce travail, et le résultat obtenu (https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fcecillon.free.fr%2FZ%2Fasourire.gif&hash=118c403f9ec6358fb28b86967b3b11a759ced1b8)
Je suis bien incapable de faire la moitié de ce que tu viens de faire ... (https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fcecillon.free.fr%2FZ%2Fayeux.gif&hash=2a00442979dda2d0c90443a191e37a0f8efdbff5)
Merci merci merci !
-
Bon ça y est, :lol:
J'ai identifié et préparé quelque chose pour les ages de la fiche :)
Mais je suis coincé pour boucler car Philippe a fait évoluer cet affichage l'année dernière, et je ne connais pas le détail de ces modifications. :cry:
-
demande à philippe de te donner cette partie du code :wink:
-
Mais je suis coincé pour boucler car Philippe a fait évoluer cet affichage l'année dernière, et je ne connais pas le détail de ces modifications.
Que veux tu faire ??
pour l age de la fiche j utilise la proc suivante : PROC_AGE_INDIVIDU
CREATE PROCEDURE PROC_AGE_INDIVIDU (
I_CLEF INTEGER)
RETURNS (
DATE_DECES INTEGER,
DATE_NAISSANCE INTEGER,
AGE INTEGER)
AS
begin
/*---------------------------------------------------------------------------
Copyright Ph Cazaux-Moutou. Tout droits réservés.
Créé le : 31/07/2001
à : 17:48:18
Modifiée le :
à : :
par :
Description :
Usage :
---------------------------------------------------------------------------*/
SELECT DECES.EV_IND_DATE_YEAR,
NAISSANCE.EV_IND_DATE_YEAR
FROM EVENEMENTS_IND DECES,
EVENEMENTS_IND NAISSANCE
WHERE (DECES.EV_IND_KLE_FICHE = :I_CLEF AND
DECES.EV_IND_TYPE = 'DEAT') AND
(NAISSANCE.EV_IND_KLE_FICHE = :I_CLEF AND
NAISSANCE.EV_IND_TYPE = 'BIRT')
into
:DATE_DECES,
:DATE_NAISSANCE;
if ((DATE_DECES IS NULL) or (DATE_NAISSANCE IS NULL)) then
BEGIN
AGE = 0;
END
ELSE
BEGIN
AGE = (DATE_DECES - DATE_NAISSANCE);
END
suspend;
end
-
Bonjour Philippe,
Pour AGE_INDIVIDU, c'est bon, j'avais identifié, et je l'avais modifié.
Ce qui me manque, c'est dans le code de individu, tu as modifié la gestion au moment de l'affichage, notamment en cas d'individu non décédé, et de plus c'est la qu'il faut intervenir si on veut le faire progresser.
-
je ramème les anomalie au goût du jour afin qu'on ne les oublie pas et que PCM puisse prendre connaissance des décisions que nous avons prises pour lui ! :wink:
-
J'ai du mal a rattraper la lecture du forum après 15 jours d'absence.
J'ai voté pour le point 3, mais pour moi la solution actuelle n'est pas un souci. Elle donne un ordre de grandeur qui me convient bien et je trouve qu'il y a des modifs plus importantes qui sont moins débattues.
-
c est réparé sur la beta 302
-
Une petite remarque sur le nouvel affichage de l'âge ; pour ma fille de 15 mois voici ce qui apparaît sur sa fiche individuelle :
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Falexis.remize.free.fr%2FDivers%2F270505.jpg&hash=786fb3c3b05e794169b4517441b770d72b52695e)
mais ceci ne se produit pas pour mon fils de 3 ans et demi :?: et les adultes (d'aprés mes constatations !) sont bien renseignés également...
-
302 Bof
Evènement individuel: Décès vendredi avant 27 février 1795
En-tête: Décédée le: avant 27 février 1795 à l'âge de 49 ans et 0 mois
Pas sensas le 0 mois.
André
-
c'est une version béta... un essai à transformer et transformable... :wink: :lol:
-
Evènement individuel: Décès vendredi avant 27 février 1795
le problème du token est revenu !
-
Je ne pense pas que le probleme du token soit revenu car chez c'est bien ecrit: décédé le 14 mai 1979 a l'âge de 66 ans et 10 mois.
Mais comme je ne sais pas comment inclure une image j'ai préféré le retranscrire :wink:
-
La situation concerne une date qui contient un token...
-
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Falexis.remize.free.fr%2FDivers%2F270505.jpg&hash=786fb3c3b05e794169b4517441b770d72b52695e)
Décédée le: avant 27 février 1795 à l'âge de 49 ans et 0 mois
Pas sensas le 0 mois.
:arrow: Corrigé beta 303
et aussi On parle en jours jusqu'à 2 semaines, en semaines jusqu'à 2 mois, en mois jusqu'à 2 ans, en années au-delà
mais que par 1 (pas par 2)
-
Bonjour,
ancestrologie v470.b3.57
liste des enfants nés posthume
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fperso.wanadoo.fr%2Falain.guichard%2Fimage%2Fcacul+date.jpg&hash=9046551b3d3c412c4439939110efd204b67c20ca)
seul un enfant est vraiment né posthume.
Qui peux m'aider pour trouver l'erreur?
Cordialement.
-
bonjour,
nouvel essai avec une copie le blanc est remplacé par _
(https://forum.ancestrologie.org/proxy.php?request=http%3A%2F%2Fperso.wanadoo.fr%2Falain.guichard%2Fimage%2Fcacul_date.jpg&hash=c78d60ba4c592df22530d956bdd121e4b9629965)
Cordialement.
-
Bonsoir,
Si tu changes de version le logiciel, sans faire migrer en même temps la base, tu risque d'avoir des problèmes, dont celui-là.
Il doit être dû au transfert de la transformation de la date saisie en date réelle, qui était fait auparavant par le logiciel, et qui est fait maintenant par la base depuis sa version b4.004. Avec la version v470 du logiciel, tu devrais utiliser la version de la base b4.017.
Maitenant, comment réparer les dégats? Le calcul des dates n'est déclenché par les triggers sur les tables que lors du premier enregistrement ou si la date saisie est modifiée (pour celà il suffit d'un espace suppémentaire).
Donc tu as le choix, soit tu ressaisis les dates en question, soit tu réimportes à partir d'un gedcom.
Ou tu essaies la requêteupdate evenements_ind e set e.ev_ind_date_year=(select IAN from proc_date_writen(e.ev_ind_date_writen))
pour mettre à jour les années des évènements individuels et update evenements_ind e set e.ev_ind_date=(select DDATE from proc_date_writen(e.ev_ind_date_writen))
pour les champs date.
Mais faudrait faire la meme chose pour les évènements familiaux et les adresses.
A+
André
-
Bonjour,
Merci pour l'analyse. Mais comment migrer la base? je pensais que lorsqu'on chargait une nouvelle version d'ancestrologie la base migrait en même temps.
Cordialement.
-
Bonsoir
Au point 4 sur le site de Ancestrologie
-
Ce n'est plus vrai depuis mi novembre. Il y avait tant de modifications de la base, que çà n'était plus gérable par le logiciel. D'ailleurs le logiciel doit te signaler que certaines fonctions ne seront pas accessibles lorsque tu sélectionnes une ancienne base.
Pour mettre à jour la base, il faut télécharger et exécuter l'outil de migration au point 4 du site ancestrologie.org.
A+
André
-
Avec un petit nombre d'"erreurs", j'ai fait la manip à la main...
- demander la liste des "posthumes"
- ouvrir l'événement naissance de l'enfant
- enlever un caractère de sa naissance
- cliquer le bouton "enregistrer"
- remettre le caractère
- ré-enregistrer
- verifier la liste des "posthumes"
Si c'est OK, on passe au suivant
Si non, on ouvre la fiche individu et on pratique de la même manière sur la date de décès du père...
Plus de faux-posthumes... :wink:
-
Oui mais si cette erreur, est détectée à l'occasion de la recherche des enfants nés posthumes, l'absence de mise à jour des champs date doit exister dans d'autres évènements individuels ou familiaux. C'est pour celà qu'il vaut mieux envisager un traitement global.
A+
André