IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

La propriété 'Année' est interdite sur une variable de type 'chaîne ANSI'. [WD23]


Sujet :

WinDev

  1. #21
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    @PhilouZ
    gdMoisPrec étant déclaré comme Date
    Pas dans le code d'azouali :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PROCEDURE ETAT_STAT_FAC_2F4(gdMoisCourant)
    On ne sait pas comment ce qui est passé en paramètre.
    Je suis persuadé que si gdMoisCourant était déclaré en tant que date dans le prototype on aurait une erreur qui ressemble à :
    Le paramètre ne peut pas être converti.
    Vous passez une chaîne la procédure attend une date
    @padbrain
    Ton code fonctionne car tu affectes à gdMoisCourant un format valide de date. Or on ne connais pas ce qui est passé réellement à l'état.

    Un petit contrôle avec la fonction DateValide serait en effet nécessaire dans le code d'initialisation de l'état du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SI PAS DateValide(gdMoisCourant) ALORS
         ErreurConstruit("Le paramètre n'est pas au format date%1Sa valeur est %2",CRLF,gdMoisCourant)
         RENVOYER FAUX
    FIN
    D'un autre côté, nous sommes en présence d'un état. S'il s'agit d'un test de l'état, il est possible que lors de la demande de paramètre, azouali saisisse "02/07/2020" au lieu de "20200702"
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  2. #22
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    @PhilouZ

    Pas dans le code d'azouali :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PROCEDURE ETAT_STAT_FAC_2F4(gdMoisCourant)
    Eh bien si. Tu confonds 2 variables et c'est ce qui t'induit en erreur
    gdMoisPrec est une Date
    gdMoisPrec=gdMoisCourant
    gdMoisPrec..Année=(gdMoisCourant..Année)-1

    On ne sait pas comment ce qui est passé en paramètre.
    Tres clairement peu importe la manière dont est passé le paramètre. Même si le paramètre est de type entier, Windev tentera de le caster en date s'il y arrive. Cela ne changera pas le type de la variable de destination. Si tu la définis comme une date, elle restera avec un type date jusqu'à sa belle mort...
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  3. #23
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    gdMoisPrec est une Date
    gdMoisPrec=gdMoisCourant
    gdMoisPrec..Année=(gdMoisCourant..Année)-1
    Où vois tu que gdMoisCourant est déclaré en tant que date ? Mis à part le fait qu'il est préfixé comme date globale.
    Si gdMoisCourant est déclaré comme global ailleurs, pourquoi dans ce ca le passer en paramètre ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #24
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    ou vois tu que gdMoisCourant est déclaré en tant que date ? Mis à part le fait qu'il est préfixé comme date globale
    Relis bien les posts et tu verras que je ne parle jamais de gdMoisCourant. C'est toi qui en déduit ça...
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  5. #25
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Justement, le problème vient de gdMoisCourant
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #26
    Membre actif

    Homme Profil pro
    Sans
    Inscrit en
    Mars 2018
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mars 2018
    Messages : 153
    Points : 295
    Points
    295
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    ...
    @padbrain
    Ton code fonctionne car tu affectes à gdMoisCourant un format valide de date. Or on ne connais pas ce qui est passé réellement à l'état.
    ...
    Pas du tout Voroltinquo, regarde bien mon code.

    Dans le premier message d'Azaouali nous savons que :

    Citation Envoyé par azaouali Voir le message
    ...La propriété 'Année' est interdite sur une variable de type 'chaîne ANSI'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gdMoisPrec est une Date
    gdMoisPrec=gdMoisCourant
    gdMoisPrec..Année=(gdMoisCourant..Année)-1
    ...
    gdMoisCourant est au format chaine ANSI d'après l'erreur puisque gdMoisPrec est déclaré comme date. L'erreur est donc bien sur gdMoisCourant, nous sommes d'accord.

    Mon code ne reprends que ces éléments :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
            gdMoisCourant est chaîne ANSI = "20200702"
    	gdMoisPrec est une Date
    	gdMoisPrec = gdMoisCourant
    	gdMoisPrec..Année -= 1
    	Trace(gdMoisPrec)     //    la trace vaut 20190702
    Donc ceci devrait aussi fonctionner pour Azaouali. Maintenant, si la chaine contenue dans gdMoisCourant n'est pas une date, ... , c'est autre chose et comme le dit Philippe, un contrôle sur cette valeur s'impose avant d'en faire un traitement.

  7. #27
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Bonjour,

    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Windev gère le transtypage de façon automatique (enfin quand il peut).
    Ici je pense que la variable gdMoisCourant n'est pas de type date, mais chaine.
    Si le format de la chaine est bon, son affectation à une variable de type date ne pose pas de problème. Par contre il n'est pas possible d'utiliser les propriétés du type date (..année, ..mois ...).
    Ici comme gdMoisPrec est de type date, tu peux récupérer/modifier l'année, le mois etc.. directement sur cette variable.

    Tatayo.
    Effectivement, windev considère le passage paramètre : variable gdMoisCourant comme une chaine. et si on s'amuse à mettre dans le code ouverture de l'état :
    PROCEDURE ETAT_STAT_FAC_2F4(gdMoisCourant est une date), l'erreur se produit immédiatement.

    Citation Envoyé par azaouali Voir le message
    Bonjour,
    Je ne comprends pas pourquoi mon code fonctionnait jusqu'à hier et hop voilà qu'il m'affiche l'erreur suivante aujourd'hui :La propriété 'Année' est interdite sur une variable de type 'chaîne ANSI'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gdMoisPrec est une Date
    gdMoisPrec=gdMoisCourant
    gdMoisPrec..Année=(gdMoisCourant..Année)-1
    le problème se situe dans cette ligne : gdMoisPrec..Année=(gdMoisCourant..Année)-1. ça renvoie l'erreur
    comme ça été signalé par tatayo, vous ne pouvez pas utiliser les propriétés de type date (..Année, ..Mois ...) sur la variable auto déclarée dans la procédure "PROCEDURE ETAT_STAT_FAC_2F4(gdMoisCourant)", puisque gdMoisCourant est considéré par windev de type chaine.

    la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE ETAT_STAT_FAC_2F4(gsChaineMoisCourant est une chaîne)
     
    gdMoisCourant est une Date
    gdMoisPrec est une Date
     
    gdMoisCourant=gsChaineMoisCourant
    gdMoisPrec=gdMoisCourant
    gdMoisPrec..Année-=1
     
    Trace("Année courante = "+gdMoisCourant +"   Année précédente = "+gdMoisPrec)

  8. #28
    Membre régulier
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Points : 83
    Points
    83
    Par défaut
    Merci à tout le monde, j'ai trouvé l'erreur c’était un fichier sql qui n’étais pas bien paramétré.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/03/2011, 08h55
  2. Précision sur une variable de type Number
    Par Proggies dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 29/05/2010, 19h08
  3. Split sur une variable de type TEXT (vs nvarchar)
    Par AliJava dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 20/06/2008, 09h05
  4. ré-initialiser un identity sur une variable de type table
    Par laurent-devel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 31/03/2008, 19h39
  5. Boucle sur une variable de type "heure"
    Par Charles25 dans le forum ASP
    Réponses: 3
    Dernier message: 15/11/2006, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo