[Résolu]Calculs de Dates à partir de numéro de jour

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Xavier79
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 05 mai 2020 11:20

[Résolu]Calculs de Dates à partir de numéro de jour

Message par Xavier79 »

 Ajout :  
Bonjour,
Je souhaite pouvoir calculer une date à partir d'un numéro de jour et de l'année

Existe t'il une fonction de type ADDDATE (qui ne fonctionne pas pour moi) ? Les échanges que j'ai trouvé sur le forum à ce sujet datent de 2012.

Par ailleurs, je souhaite, à partir de l'année, définir la date du premier jour .

Merci beaucoup pour votre aide
Pièces jointes
Capture d’écran 2020-05-21 à 19.01.56.png
Dernière modification par Xavier79 le 28 mai 2020 10:06, modifié 1 fois.
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Calculs de Dates à partir de numéro de jour

Message par jeanmi2403 »

Bonjour,
Est-ce que ton usage de DateAdd correspond bien à la documentation de la fonction.
Le troisième paramètre de la fonction est une variable de type date, alors que visiblement tu lui envoie une chaîne de caractères.
De plus, pour augmenter d'un an, le premier paramètre est "yyyy", et pour un nombre de jours, "d"
Pour info, l'exemple sur la doc est faux en français, il devrait être le suivant :

Code : Tout sélectionner

Sub example_dateadd
    MsgBox DateAdd("m", 1, "31/1/2004") &" - "& DateAdd("m", 1, "31/1/2005")
End Sub
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Xavier79
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 05 mai 2020 11:20

Re: Calculs de Dates à partir de numéro de jour

Message par Xavier79 »

jeanmi2403 a écrit :Bonjour,
Est-ce que ton usage de DateAdd correspond bien à la documentation de la fonction.
Le troisième paramètre de la fonction est une variable de type date, alors que visiblement dtu lui envoie une chaîne de caractères..
Bonjour et merci pour ta réponse,

Oui le champs "Date_document" est bien un champs de date provenant d'une table.
J'ai corrigé le critére "d" mais cela ne fonctionne pas.

J'ai un message 'Access denied' qui me revient quand je lance la requête.
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Calculs de Dates à partir de numéro de jour

Message par jeanmi2403 »

Bonjour,
Une seule question par message (règle du forum :D ), donc seconde réponse pour ta seconde question.
Xavier79 a écrit :Par ailleurs, je souhaite, à partir de l'année, définir la date du premier jour .
une recherche rapide dans la documentation aurait donné la solution...

Code : Tout sélectionner

annee=2020
datePremier=DateSerial (annee, 1, 1)
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Calculs de Dates à partir de numéro de jour

Message par jeanmi2403 »

Re-Bonjour,
Oui le champs "Date_document" est bien un champs de date provenant d'une table.
J'ai corrigé le critére "d" mais cela ne fonctionne pas.
Pour utiliser la valeur du champ dans la fonction, il faut retirer les guillemets. Ne pas confondre requête SQL et fonction oooBasic.
La modération vous a écrit: Merci de ne pas poster plusieurs messages à la suite. Vous disposez d'un bouton ÉDITER en haut à droite de chaque message et d'un autre bouton ajout si vous désirez ajouter un complément lorsqu'il n'y a pas de réponse.

Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Xavier79
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 05 mai 2020 11:20

Re: Calculs de Dates à partir de numéro de jour

Message par Xavier79 »

jeanmi2403 a écrit :Re-Bonjour,
Oui le champs "Date_document" est bien un champs de date provenant d'une table.
J'ai corrigé le critére "d" mais cela ne fonctionne pas.
Pour utiliser la valeur du champ dans la fonction, il faut retirer les guillemets. Ne pas confondre requête SQL et fonction oooBasic.
Désolé pour les 2 questions en une, j'en prends bonne notre

Ci-dessous ma tentative, cela ne fonctionne pas. Je suppose que je commets une erreur quelque part ou que j'ai un problème de format.
Je n'ai pas bien compris votre commentaire sur les " " car ils sont nécessaires notamment dans la fonction YEAR qui isolément fonctionne normalement. (Cf capture d'écran)
J'ai néanmoins essayé sans et avec des ' ' mais sans succès que ce soit avec la fonction DATEADD ou DATESERIAL
Pièces jointes
Capture d’écran 2020-05-22 à 14.40.52.png
Capture d’écran 2020-05-22 à 14.50.13.png
Dernière modification par micmac le 22 mai 2020 16:23, modifié 1 fois.
Raison : Citation réduite pour faciliter la lecture
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Calculs de Dates à partir de numéro de jour

Message par jeanmi2403 »

Exact, d'après les tests que je viens de faire, il semblerait que ces fonctions ne soient pas accessibles depuis les requêtes HSQL LibreOffice.
Désolé...
 Ajout : Donc on ne peut faire aucun calcul sur les dates avec le SQL de LibreOffice 
Dernière modification par jeanmi2403 le 22 mai 2020 19:03, modifié 1 fois.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Calculs de Dates à partir de numéro de jour

Message par jeanmimi »

Bonjour,
Les codes SQL pour gérer les dates sont décrits dans cette page :
https://wiki.openoffice.org/wiki/FR/Doc ... h09#SELECT

Les codes SQL DATEADD ou DATESERIAL y sont inconnus, et YEAR n'est pas une fonction mais un code SQL.
Quel résultat cherches-tu à obtenir ? et as-tu testé DATEDIFF ?
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Xavier79
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 05 mai 2020 11:20

Re: Calculs de Dates à partir de numéro de jour

Message par Xavier79 »

jeanmimi a écrit :Bonjour,
Les codes SQL pour gérer les dates sont décrits dans cette page :
https://wiki.openoffice.org/wiki/FR/Doc ... h09#SELECT

Les codes SQL DATEADD ou DATESERIAL y sont inconnus, et YEAR n'est pas une fonction mais un code SQL.
Quel résultat cherches-tu à obtenir ? et as-tu testé DATEDIFF ?
Merci en tous cas de ton aide.

Oui j'ai essayé DateDiff mais cela ne fonctionne pas non plus, je commence à désespérer et à me demander si ça ne vient pas de mon paramétrage.

J'ai utilisé la méthode ci-dessous (un peu lourd mais bon) mais ça me retourne une date en format 'Nombre' et je n'arrive pas à la transformer en format DD/MM/YYY
CAST( CONCAT( CONCAT( CONCAT( CONCAT( CASE WHEN "Jour_Fabrication" > DAYOFYEAR( "Date document" ) THEN YEAR( "Date document" ) - 1 ELSE YEAR( "Date document" ) END, '-' ), 1 ), '-' ), 1 ) AS DATE )
En fait, j'ai des numéro de lots codés avec le jour de l'année que je trouve notamment dans ma base de facturation
 Ajout : Correction, Datediff fonctionne, je n'avais pas la bonne strucutre, merci pour ton lien ! 
J'ai une autre table avec les semaines de fabrication et j'ai besoin de lier les numéros de lots aux semaines de fabrication.
En attendant, j'ai divisé les jours de fabrication par 7 (arrondis +1) mais ce n'est pas très fiable...
Dernière modification par Xavier79 le 22 mai 2020 21:58, modifié 1 fois.
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Avatar de l’utilisateur
CanadaDry
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 25 nov. 2014 15:09
Localisation : Laval, QC

Re: Calculs de Dates à partir de numéro de jour

Message par CanadaDry »

Hello cousin,

Facilite nous le job.
Joins un ODB avec ta requête et quelques données.
OpenOffice 4.1.8 Windows 7 Edition Professional
Xavier79
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 05 mai 2020 11:20

Re: Calculs de Dates à partir de numéro de jour

Message par Xavier79 »

bon j'ai fini par me résoudre à le faire 'à l'ancienne' (Cf capture)

En gros, j'utilise CONCAT pour former la date de début d'année, puis DAYOFWEEK pour connaitre le numéro de jour dans la semaine 1 du 1er janvier puis j'ajoute le numéro de jour dans l'année de ma date de fabrication etje divise par 7 avec INT pour arrondir à la date inférieure +1 (car la semaine 0 n'existe pas)

Pas très élégant mais ça marche. Merci à tous ceux qui m'ont donné un coup de main.

Pour le moment je ne mets pas encore le post en résolu car j'aimerais savoir s'il n'y a pas une manière plus efficace de résoudre mon problème
Pièces jointes
Capture d’écran 2020-05-23 à 09.35.30.png
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Avatar de l’utilisateur
CanadaDry
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 25 nov. 2014 15:09
Localisation : Laval, QC

Re: Calculs de Dates à partir de numéro de jour

Message par CanadaDry »

Xavier79 a écrit :Pour le moment je ne mets pas encore le post en résolu car j'aimerais savoir s'il n'y a pas une manière plus efficace de résoudre mon problème
Tabernak, si tu donnais ce qu'on te demande, on pourrait sans doute :roll:
OpenOffice 4.1.8 Windows 7 Edition Professional
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Calculs de Dates à partir de numéro de jour

Message par jeanmimi »

Xavier79 a écrit :Je souhaite pouvoir calculer une date à partir d'un numéro de jour et de l'année
Finalement, est-ce que ce ne serait pas plus simple de créer les deux colonnes dans Calc puis de faire un Copier/coller dans Base pour créer la Table ?
Pièces jointes
Base_Dates_Fabrication.odb
(11 Kio) Téléchargé 152 fois
Jour_Date_2019.ods
(18.13 Kio) Téléchargé 149 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Xavier79
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 05 mai 2020 11:20

Re: Calculs de Dates à partir de numéro de jour

Message par Xavier79 »

 Ajout :  
jeanmimi a écrit :
Xavier79 a écrit :Je souhaite pouvoir calculer une date à partir d'un numéro de jour et de l'année
Finalement, est-ce que ce ne serait pas plus simple de créer les deux colonnes dans Calc puis de faire un Copier/coller dans Base pour créer la Table ?
Oui bien sur mais je cherchais une solution via une fonction qui vraisemblablement n'existe pas.
Merci beaucoup quand meme de ton aide
CanadaDry a écrit :
Xavier79 a écrit :Pour le moment je ne mets pas encore le post en résolu car j'aimerais savoir s'il n'y a pas une manière plus efficace de résoudre mon problème
Tabernak, si tu donnais ce qu'on te demande, on pourrait sans doute :roll:
Désolé, j'ai pris un peu de temps, Je ne pouvais pas envoyer ma base telle que. Ci-jointe une base test. Merci pour vos avis.
Pièces jointes
BdD Test.odb
(6.9 Kio) Téléchargé 164 fois
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Calculs de Dates à partir de numéro de jour

Message par jeanmimi »

Xavier79 a écrit :Désolé, j'ai pris un peu de temps, Je ne pouvais pas envoyer ma base telle que. Ci-jointe une base test. Merci pour vos avis.
La Base ne contient qu'une seule Table, c'est normal ?
Pourquoi répéter dans cette Table les noms des fromages alors qu'il devrait y avoir une Table Articles et dans la Table T_Ventes seulement leurs ID. Idem pour les Nom tiers s'ils se répètent.
Telle qu'elle est, la Table Ventes ressemble plus à une Feuille Calc qu'à une Table de Base relationnelle.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Xavier79
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 05 mai 2020 11:20

Re: Calculs de Dates à partir de numéro de jour

Message par Xavier79 »

jeanmimi a écrit :
Xavier79 a écrit :Désolé, j'ai pris un peu de temps, Je ne pouvais pas envoyer ma base telle que. Ci-jointe une base test. Merci pour vos avis.
La Base ne contient qu'une seule Table, c'est normal ?
Pourquoi répéter dans cette Table les noms des fromages alors qu'il devrait y avoir une Table Articles et dans la Table T_Ventes seulement leurs ID. Idem pour les Nom tiers s'ils se répètent.
Telle qu'elle est, la Table Ventes ressemble plus à une Feuille Calc qu'à une Table de Base relationnelle.
C'est une base test donc j'ai retiré toutes les autres tables et notamment les table articles et clients qui contiennent d'autres informations

Cette table est effectivement constituée à partir d'un extraction native d'un outil de facturation et contient le nom de l'article qui contient le code sur les deux premières lettres et celui du client.

Mais mon sujet était, comment calculer une date de fabrication à partir d'un numéro de jour et d'une année en utilisant une fonction type AddDate. Je pense que ce 'est pas possible et j'ai donc intégré les calculs décrits précédemment. Ca fonctionne
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Avatar de l’utilisateur
CanadaDry
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 25 nov. 2014 15:09
Localisation : Laval, QC

Re: Calculs de Dates à partir de numéro de jour

Message par CanadaDry »

Xavier79 a écrit :comment calculer une date de fabrication à partir d'un numéro de jour et d'une année en utilisant une fonction type AddDate.
Hmm, cela aurait été bien de simplifier ta requete à ce seul calcul.
Et donner quelques explications sur le "comment tu arrives au résultat".

Tu nous épargneras de capoter à comprendre.
OpenOffice 4.1.8 Windows 7 Edition Professional
Verrouillé