FORUMS PROFESSIONNELSWINDEV , WEBDEV et WINDEV Mobile
Débuté par priv!p106np6Msov06r4np6v8r+s4, 23 fév. 2025 21:32 - 8 réponses
Membre enregistré 8 messages
Posté le 23 février 2025 - 21:32
Bonjour Sur une page, j'ai intégré un champs de saisie d'une date (de naissance). Que j'utilise la fonction Age en sortie de champs afin de savoir si la personne est majeure, avec certaines dates (comme par exemple 02/02/2001 ou 02/02/2002). Mon code est le suivant en traitement de sortie de champs SI SAI_naissance="" ALORS SAI_naissance.CouleurFond=Blanc FIN SI DateValide(SAI_naissance) ALORS monage est une Date = Age(SAI_naissance, DateDuJour) SI monage.année<18 ALORS SAI_naissance..CouleurFond=RougeClair SINON SAI_naissance.CouleurFond=VertClair FIN SINON SAI_naissance="" FIN Le message d'erreur qui s'affiche est le suivant : "localhost indique Erreur dans le code navigateur : Format invalide." Avez-vous déjà eu ce type de soucis avec cette fonction ? -- Frédéric Besnard
Membre enregistré 15 messages
Posté le 24 février 2025 - 13:41
Bonjour, Je viens de tester votre code en 28, juste copier coller ça tourne au poil. J'ai un windows en français et le browser en français. Le mieux reste de mettre un info ou une trace après le date Valide pour voir ? Possible que votre date valide fonctionne en format "US", avec le mois et le jour inversé, mais la fonction AGE, elle n'accepte que des dates à la française ? C'est le seul cas ou une date valide pourrait ne plus l'être lors que de la conversion de l'age. EDIT : Je viens de tester la date du 15/12/1981, ca fonctionne, si j'inverse la date en format anglais, "19811512" au lieu de " 19811215" < là j'ai l'erreur que vous avez à l'identique. PonchMessage modifié, 24 février 2025 - 13:43
Membre enregistré 70 messages
Posté le 24 février 2025 - 14:11
Bonjour, Le résultat de la fonction Age est une chaine de caractère (pas une date). Ca peut aider d'affecter les bons formats, aussi... Du coup, le test ensuite sera :SI Val ( monage) < 18 ALORS
-- Qui ne sait rien, de rien ne doute...
Membre enregistré 8 messages
Posté le 24 février 2025 - 18:35
Merci bcp pour vos réponses. Mais ça ne fonctionne pas, au bout de quelques saisies consécutives de dates différentes mais avec des chiffres répétitifs, je finis par avoir le même message d'erreur. J'ai volontairement réduit mon code, et l'erreur est toujours générée par le traitement juste après le "monage est une Date = Age(SAI_naissance, DateDuJour)". Le format SI SAI_naissance="" ALORS SAI_naissance.CouleurFond=Blanc FIN SI DateValide(SAI_naissance) ALORS monage est une Date = Age(SAI_naissance, DateDuJour) Info(monage.Année) // SI val(monage)<18 ALORS // info(monage) // SAI_naissance..CouleurFond=RougeClair // SINON // SAI_naissance.CouleurFond=VertClair // FIN SINON SAI_naissance="" FIN Afficher l'âge en années suffit à faire planter... si j'essaie par exemple avec une saisie 02 02 2002 ou 02 02 2001 ça plante systématiquement... Je suis sous windows 10 en français avec un navigateur en français. Mon SAI_naissance est paramétré comme suit : -- Frédéric Besnard
Membre enregistré 8 messages
Posté le 24 février 2025 - 19:21
Membre enregistré 70 messages
Posté le 25 février 2025 - 15:30
Désolé pour ma réponse approximative... J'ai pris quelques minutes pour tester et valider ma réponse :SI DateValide ( SAI_ DateNaissance ) ALORS monage est une chaîne = Age ( SAI_ DateNaissance , DateDuJour ( ) ) SI Val ( Gauche ( monage, 4 ) ) < 18 ALORS SAI_ DateNaissance .. CouleurFond = RougeClair SINON SAI_ DateNaissance .. CouleurFond = VertClair FIN FIN
-- Qui ne sait rien, de rien ne doute...Message modifié, 25 février 2025 - 15:32
Membre enregistré 15 messages
Posté le 25 février 2025 - 15:49
Et sinon pourquoi vouloir continuer d'utiliser une fonction qui bug ? Vous calculer le nombre de jour écoulé entre les deux dates, divisé par 365.25 pour gérer les années bisextiles.MonAge est un entier = ( DateVersEntier ( DateSys ) - DateVersEntier ( "20010202" ) ) / 365.25
Si vous ne souhaitez que l'age cette syntaxe fera le boulot à la perfection. Sinon vous utilisez une variable de type durée et vous faite un dateHeuredifference pour récupérer le nombre d'année écoulé entre les deux datesMessage modifié, 25 février 2025 - 15:50
Membre enregistré 8 messages
Posté le 25 février 2025 - 21:30
Merci bcp pour vos réponses et votre aide précieuse, la fonction Age() m'aura bien fait perdre mon temps et mon énergie. Encore merci à tous -- Fred B.Message modifié, 25 février 2025 - 21:32
Membre enregistré 15 messages
Posté le 26 février 2025 - 14:39
Mais de rien avec plaisir, il y a des fois on va plus vite à faire simple de 0, que d'essayer de débugger des choses auquel on a pas accès. Pour ça que perso je n'utiliserais jamais d'IA pour m'assister en prog, je passerais plus de temps à débugger ces erreurs que de faire moi même de 0 en comprenant ce que je fais Dans tous les cas bon développement !