Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Re,

Le 08/05/2017 à 17:18, dvd69 a écrit :
        RetourDate = oPDialog.getControl("DateField1").getDate
        '
        ' ...
        '
        ' Informations (simplistes !)
        MsgBox("Nom:" & Nom & " - Prénom:" & Prenom & Chr(13) & "Catégorie:"
& NomCategorie & Chr(13) & "Date validité:" & RetourDate )

a la fin de l'execution de la macro, j'ai l'erreur:
"Erreur d'exécution BASIC.
Valeur de propriété incorrecte."

si j'efface:
"Date validité:" & RetourDate

et execute de nouveau la macro, il n'y a plus de pb. RetourDate attend-il
qlq chose d'equivalent a Chr, mais quoi? est ce en relation avec l'evolution
de Calc exprimee ici
precedent post
<http://nabble.documentfoundation.org/resolu-macro-sous-calc-erreur-que-je-ne-comprends-pas-CDateToIso-td4214058.html>

ben oui :,(

Comme indiqué dans l'autre fil, les contrôles DateField utilisent des structures com.sun.star.util.Date depuis LO v.4.1.1 (voir les notes de version citées plus bas).

DateField.getDate retourne donc une structure com.sun.star.util.Date. Du coup, l'instruction
"Date validité:" & RetourDate
ne fonctionne pas puisque RetourDate ne contient pas une chaîne mais une structure qui ne peut pas être interprétée automatiquement en chaîne (voir la remarque plus bas).

-> Il faut convertir explicitement la structure de type com.sun.star.util.Date en chaîne. La fonction CDateFromUnoDate() est là pour ça (voir l'aide).

À propos de ces questions de dates, je vous conseille de lire :
https://wiki.documentfoundation.org/ReleaseNotes/4.1/fr#Changements_dans_l.27API
où ceci est précisé :

-8< ---------------------------------------------------
À partir de 4.1.1 core commit 43ea97e1f9cecd6c7cba8db35ce1307c858c6857:

-- service com.sun.star.awt.UnoControlDateFieldModel: propriétés Date, DateMin and DateMax changées en type com.sun.star.util.Date au lieu de long (integer).
-8< ---------------------------------------------------


Remarque : RetourDate n' "attend" rien.
Comme cette variable n'est pas déclarée dans le sous-programme, LibreOffice Basic la considère comme de type Variant (type fourre-tout).
C'est l'affectation
RetourDate = oPDialog.getControl("DateField1").getDate
qui lui donne son type réel lors de l'exécution (com.sun.star.util.Date).

Inversement, si RetourDate avait été déclarée comme String, c'est alors l'instruction
RetourDate = oPDialog.getControl("DateField1").getDate
qui aurait généré l'erreur.

Pour éviter tout problème de ce... type... je conseillerais donc :

1. De (toujours !) déclarer les variables.

Dim RetourDate As String

(avec l'option
Option Explicit
en tout début de module, on assure que le programme vérifiera que toutes les variables existent)

2. De transtyper

RetourDate = CDateFromUnoDate(oPDialog.getControl("DateField1").getDate)

Ce qui donnera le fonctionnement attendu.


Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux


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