Bonjour,
Pour une fois que j'ai un public, j'en profite...
Je comprends effectivement la démarche et reconnais bien ces notions de
"semaines" ou de "mois" qu'on trouve dans de nombreuses dispositions
légales, mais qui à l'usage deviennent plus difficiles à manipuler dès
qu'on les confronte à notre réalité faite de jours...
Si je me trouvais face à ce que tu veux faire, je crois que ma réflexion
s'opèrerait autour de deux contraintes :
- d'abord, je ne crois pas que je transformerais les semaines en mois ni
les mois en années ; je stockerais le tout sous sa forme initiale et je
ressortirais l'information brute, sans transformation ; ce n'est pas
obligatoirement la même signification d'avoir pris 2 mois de suspension
ou d'avoir accumulé 1 mois et 4 semaines ; dans le premier cas, on peut
supposer que c'est une grosse faute qui a été commise alors que dans
l'autre, on a quelqu'un qui est un peu un multi-récidiviste (il a
peut-être pris une fois un mois pour une faute importante et 4 fois une
semaine ou une fois 2 semaines et 2 fois une semaine pour des fautes
moins importantes mais néanmoins existantes) ; perso, je ne verrais pas
de mal à évoquer un total de "2 mois et 13 semaines de sanction
disciplinaire" plutôt que 5 mois et 1 semaines ;
- en second lieu, pour la saisie, je créerais un formulaire avec un
champ pour les semaines, un autre pour les mois et un autre pour les
années mais je ferais en sorte de stocker le tout dans un champ unique
de la base, sans rien perdre de la précision initiale (donc sans
transformation des semaines en mois ou l'inverse).
Pour réaliser le deuxième point (le stockage des mois/semaines/années)
dans un champ unique de la BD, j'ai une recette ; elle n'est pas
transposable de manière universelle mais pour le ,domaine que tu
évoques, elle peut tout à fait convenir : en fait, je en sorte de
stocker tout ça sous la forme d'un nombre entier dont chaque chiffre
serait le compteur des années/mois/semaines ; par exemple 218
signifierait 2 ans, 1 mois et 8 semaines ; évidemment, tu me diras que
si la personne en question se prend plus de 9 semaines, on est ennuyé,
vu qu'on ne sait pas si 2113 signifie 2 ans 1 mois et 13 semaines ou 2
ans 11 mois et 3 semaines... Mais ce n'est pas un problème : il suffit
de multiplier pour aboutir à un grand entier mais qui ne pose aucun
doute ; par exemple, on peut imaginer que peut de monde atteindrait un
cumul de 1.000 semaines de sanctions ; donc, on peut multiplier le
nombre de moi par 1.000 en étant certain que que le chiffre des milliers
indiquera des mois et non une quelconque partie des semaines ; de la
même façon, je ne pense pas qu'il faille s'attendre à ce qu'un individu
(de nature humaine, bien sûr) aille cumuler plus de 99 mois de sanctions
disciplinaires ; auquel cas, il suffirait de multiplier le nombre
d'années par 100.000 (les 1.000 appliqués aux signifiants des mois et
les 100 supplémentaires propres aux signifiants des années), voire par
1.000.000 si on veut vraiment être certain, ou bien qu'on craint de
faire face à une autorité prononçant des sanctions sans toutefois jamais
exclure définitivement, ou bien encore si simplement on veut être un peu
cohérent et se dire que chaque série de 3 chiffres dans le nombre se
rapporte à une unité de temps différente (les millions pour les années,
les milliers pour les mois et les unités pour les semaines) ; ou on peut
aussi imaginer que le cumul ne se fera pas obligatoirement pour un
individu mais qu'une volonté d'étude statistique pourra conduire à
vouloir déterminer la durée des sanctions prononcées par l'autorité dans
un laps de temps et auquel cas, la relation aux limites propres à un
individu saute et il faut prévoir une échelle plus grande et un plus
grand entier.
En tout cas, quel que soit le choix opéré, on se retrouve avec des
nombres manipulables mathématiquement, regroupés dans un seul champ de
la base et dont on peut extraire la signification par un simple calcul
mathématique, avec des [floor(x)] pour obtenir la partie entière d''un
nombre (en l'occurrence, c'est la partie entière d'une division par
1.000.000 ou 1.000 qui nous intéressera), des [mod(x,a)] pour obtenir le
reste d'une division de "x" par "a", où les "a" en question serait, ici
aussi, 1.000.000 ou 1.000 et des combinaisons de deux.
Là je vais déjeuner mais je pourrai développer plus si besoin.
A+
Le 10/03/2015 06:13, Eric Hoffmann a écrit :
Bonjour
Merci pour ta réponse précise... et amusante !
Mon champ contient des informations qui sont des nombres entiers de
semaines (entre 1 et 4), des nombres entiers de mois (entre 1 et 11)
et 1 année.
Dans ma BD, il s'agit de durées de sanctions disciplinaires appliquées
à l'encontre de professionnels de mon métier. Ces durées sont définies
comme cela dans nos textes qui ne précisent pas si le mois dure 28,
29, 30 ou 31 jours.
Pour le moment, le type de champ que j'ai choisi est VARCHAR. Mais
avec ce type de champ, je ne peux pas faire de calculs comme la somme
des durées de sanction d'un professionnel.
Je me disais qu'un type de champ défini avec une durée aurait pu
répondre à ma question, mais ton argumentation précise sur la durée
réelle du mois exclue le mois de cet éventuel type de champ.
Je pense que je verrai plus tard dans le développement de ma BD, la
possibilité de créer une table secondaire contenant plusieurs champs
(nb compris entre 1 et 11 ; fraction d'année : semaine, mois, année)
et que je verrai comment faire les calculs avec cela.
Merci encore pour la précision de ta réponse.
Cordialement,
*Éric HOFFMANN
*
Le 09/03/2015 20:52, Docgranville a écrit :
Bonjour,
Quelque chose doit m'échapper mais quelle est la spécificité de ton
champ ?
Que ta colonne indique 1, 3, 7 ou 36, il importe assez peu que ce
soient des jours, des semaines, des carottes, des chars d'assaut ou
des pots de peinture, non ?
Le seul truc, c'est qu'au bout d'un certain nombre (environ 4), ça
fait un mois ; mais à part ça, je ne vois pas bien où tu veux en venir.
D'autant que "1 mois", ça ne signifie pas grand chose.
Autant 1 minute, c'est rarement plus (ou moins) de 60 secondes ;
autant il est rare qu'une heure s'éloigne beaucoup de 60 minutes,
qu'un jour s'étende au-delà des 24 heures règlementaires et qu'une
semaine survive au terme de son 7ème jour, autant un mois, c'est tout
de suite plus compliqué.
Un mois, ça peut être 28, 29, 30 ou 31 jours selon le cas ; un mois,
en tant que 1/12 dune année, c'est entre 30,41 et 30,50 jours ; en
tant que 1/48 de quatre années (3 "normales" et une bissextile), ça
fait 30,43 jours ; si on parle en temps de travail, un mois c'est
7,04 jours de 24 heures pour les gens qui sont à 39 heures
hebdomadaire et c'est 6,31 jours de 24 heures pour les gens à 35
heures hebdo.
Pour répondre directement à ta question, je n'ai pas connaissance
d'un type de champ dédié aux semaines et aux mois ; mais dans le même
temps, je n'en vois pas vraiment l'utilité non plus.
Ou alors je rate quelque chose...
Peut-être avec plus de précisions ?
A+
Le 09/03/2015 16:03, Eric Hoffmann a écrit :
Bonjour,
J'ai besoin de créer un champ dans une table dont le type est une
durée : 1 semaine, 2 semaines, 1 mois...
Est-ce possible ?
Je vois bien les types de champ Date, Heure ou Date/Heure, mais du
type Durée.
LibreOffice 3.5.4 sous Debian
Merci.
Bonne soirée,
PS : je re-poste au format TXT, car mon précédent courriel a une
forme toute pourrie !
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être
supprimés
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.