Page 1 sur 1

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

Publié : 21 mai 2020 17:03
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

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

Publié : 22 mai 2020 09:51
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,

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

Publié : 22 mai 2020 10:11
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.

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

Publié : 22 mai 2020 10:22
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,

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

Publié : 22 mai 2020 10:28
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.


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

Publié : 22 mai 2020 12:54
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

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

Publié : 22 mai 2020 14:25
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 

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

Publié : 22 mai 2020 16:17
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 ?

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

Publié : 22 mai 2020 18:02
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...

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

Publié : 22 mai 2020 18:12
par CanadaDry
Hello cousin,

Facilite nous le job.
Joins un ODB avec ta requête et quelques données.

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

Publié : 23 mai 2020 07:40
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

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

Publié : 23 mai 2020 16:21
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:

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

Publié : 24 mai 2020 09:42
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 ?

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

Publié : 26 mai 2020 09:45
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.

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

Publié : 26 mai 2020 15:37
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.

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

Publié : 28 mai 2020 08:00
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

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

Publié : 02 juin 2020 12:32
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.