[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.

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

Messagepar Xavier79 » 21 Mai 2020 18:03

 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 édition par Xavier79 le 28 Mai 2020 09:06, édité 1 fois.
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Xavier79
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 05 Mai 2020 10:20

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

Messagepar jeanmi2403 » 22 Mai 2020 10:51

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   AgrandirRéduire
Sub example_dateadd
    MsgBox DateAdd("m", 1, "31/1/2004") &" - "& DateAdd("m", 1, "31/1/2005")
End Sub

Cordialement,
Jean-Michel
LibO 6.4.5 et AoO 4.1.7
Windows 10 x64 & Ubuntu 20.04
Avatar de l’utilisateur
jeanmi2403
PassiOOnné
PassiOOnné
 
Message(s) : 537
Inscrit le : 18 Jan 2008 10:02
Localisation : Sucy en Brie

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

Messagepar Xavier79 » 22 Mai 2020 11:11

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
Xavier79
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 05 Mai 2020 10:20

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

Messagepar jeanmi2403 » 22 Mai 2020 11:22

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   AgrandirRéduire
annee=2020
datePremier=DateSerial (annee, 1, 1)

Cordialement,
Jean-Michel
LibO 6.4.5 et AoO 4.1.7
Windows 10 x64 & Ubuntu 20.04
Avatar de l’utilisateur
jeanmi2403
PassiOOnné
PassiOOnné
 
Message(s) : 537
Inscrit le : 18 Jan 2008 10:02
Localisation : Sucy en Brie

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

Messagepar jeanmi2403 » 22 Mai 2020 11:28

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 6.4.5 et AoO 4.1.7
Windows 10 x64 & Ubuntu 20.04
Avatar de l’utilisateur
jeanmi2403
PassiOOnné
PassiOOnné
 
Message(s) : 537
Inscrit le : 18 Jan 2008 10:02
Localisation : Sucy en Brie

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

Messagepar Xavier79 » 22 Mai 2020 13:54

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 édition par micmac le 22 Mai 2020 15:23, édité 1 fois.
Raison: Citation réduite pour faciliter la lecture
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Xavier79
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 05 Mai 2020 10:20

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

Messagepar jeanmi2403 » 22 Mai 2020 15:25

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 édition par jeanmi2403 le 22 Mai 2020 18:03, édité 1 fois.
Jean-Michel
LibO 6.4.5 et AoO 4.1.7
Windows 10 x64 & Ubuntu 20.04
Avatar de l’utilisateur
jeanmi2403
PassiOOnné
PassiOOnné
 
Message(s) : 537
Inscrit le : 18 Jan 2008 10:02
Localisation : Sucy en Brie

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

Messagepar jeanmimi » 22 Mai 2020 17:17

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 : Version : 6.4.5.2 (x64)(6 juillet 2020)
AdoptOpenJDK (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15365
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar Xavier79 » 22 Mai 2020 19:02

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 édition par Xavier79 le 22 Mai 2020 20:58, édité 1 fois.
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Xavier79
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 05 Mai 2020 10:20

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

Messagepar CanadaDry » 22 Mai 2020 19:12

Hello cousin,

Facilite nous le job.
Joins un ODB avec ta requête et quelques données.
OpenOffice 4.1.7 Windows 7 Edition Professional
Avatar de l’utilisateur
CanadaDry
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 165
Inscrit le : 25 Nov 2014 15:09
Localisation : Laval, QC

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

Messagepar Xavier79 » 23 Mai 2020 08:40

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
Xavier79
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 05 Mai 2020 10:20

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

Messagepar CanadaDry » 23 Mai 2020 17:21

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.7 Windows 7 Edition Professional
Avatar de l’utilisateur
CanadaDry
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 165
Inscrit le : 25 Nov 2014 15:09
Localisation : Laval, QC

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

Messagepar jeanmimi » 24 Mai 2020 10:42

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é 11 fois
Jour_Date_2019.ods
(18.13 Kio) Téléchargé 10 fois
LibreOffice Version : Version : 6.4.5.2 (x64)(6 juillet 2020)
AdoptOpenJDK (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15365
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar Xavier79 » 26 Mai 2020 10:45

 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é 17 fois
Libre office6.6.3.6.2
Mac OS Mojave 10.14.6
Xavier79
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 05 Mai 2020 10:20

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

Messagepar jeanmimi » 26 Mai 2020 16:37

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 : Version : 6.4.5.2 (x64)(6 juillet 2020)
AdoptOpenJDK (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15365
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar Xavier79 » 28 Mai 2020 09:00

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
Xavier79
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 05 Mai 2020 10:20

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

Messagepar CanadaDry » 02 Juin 2020 13:32

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.7 Windows 7 Edition Professional
Avatar de l’utilisateur
CanadaDry
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 165
Inscrit le : 25 Nov 2014 15:09
Localisation : Laval, QC


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)