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

Lotus Notes Discussion :

Obligation de convertir en integer des integer quand on appelle un sous-programme


Sujet :

Lotus Notes

  1. #1
    Invité
    Invité(e)
    Par défaut Obligation de convertir en integer des integer quand on appelle un sous-programme
    Bonjour,

    Quand je déclare des sous-programmes (des Sub ou des Function), je déclare certains paramètres de ceux-ci de type Integer. Mais quand je les appelle en leur passant des integer, le compilateur du Designer me force à les convertir en integer alors qu'ils le sont déjà.

    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Consolidation
    	Dim Annee, Mois, Agent, j, NumeroAgent As Integer
    <reste du code> puis :
    
    Call DatesPlanningCantine ( CInt ( Annee ), CInt ( Mois ), Entry.ColumnValues ( 1 ) )
    Avec comme Sub :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub DatesPlanningCantine ( Annee As Integer, Mois As Integer, JoursDeCantine  As Variant )
    Et bien si je ne convertis pas les paramètres en integer à l'aide de Cint, par exemple si je ne fais pas "Cint ( Annee )", le designer indique "Type mismatch on Annee".

    je souhaiterai appeler les Subs ou les fonctions sans avoir à convertir des integer en integer.

    Merci pour vos éclaicissements.

  2. #2
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    Hello

    remplace

    Dim Annee, Mois, Agent, j, NumeroAgent As Integer

    par

    dim annee as integer
    dim mois as integer
    dim agent as integer
    dim j as integer
    dim numeroagent as integer

    ça devrait régler le problème si j ne me trompe car de mémoire sur ce type de déclaration

    Dim Annee, Mois, Agent, j, NumeroAgent As Integer

    ça bug un peu et seule la derniere variable est de type integer les autres sont de type variant

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Michael.RHAN Voir le message
    ça bug un peu et seule la derniere variable est de type integer les autres sont de type variant
    Merci Michael ! "Ca bug un peu.... " Oui effectivement je trouve ça même grave comme bug pour un compilateur qui a combien d'années d'existence ???!!!

    Cordialement.

  4. #4
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Pas un bug
    Dans la doc c'est indiqué

    dim i, j, k as integer

    i et j sont de type variant

    donc

    dim i as integer, j as integer, k as integer ou plus simple

    dim i%, j%, k%

    etc...

  5. #5
    Membre averti
    Homme Profil pro
    Consultant Lotus Notes/Domino
    Inscrit en
    Juin 2015
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Lotus Notes/Domino
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 312
    Points : 397
    Points
    397
    Par défaut
    Oui c'est pas un bug, c'est ta notation qui est fausse.
    C'est une erreur de syntaxe commune parmi les développeurs (moi aussi je l'eus faite).

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Fabrice Papirnyk Voir le message
    Oui c'est pas un bug, c'est ta notation qui est fausse.
    C'est une erreur de syntaxe commune parmi les développeurs (moi aussi je l'eus faite).
    Merci Fabrice.

    j'eusse aimé que Designer me signalasse cette erreur de syntaxe mais bon, merci à la communatuté !

    Christian

  7. #7
    Membre expérimenté
    Avatar de Jérôme Deniau
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 804
    Points : 1 434
    Points
    1 434
    Billets dans le blog
    32
    Par défaut Oui et non
    Oui: option "strict" dans les déclarations à demander à IBM

    Non: car dans les speechs Microsoft le type par défaut est VARIANT, donc toute déclaration d'une variable sans type est d'office de type VARIANT.

    Exemple:
    dim Var

    Var peut être de type String/Integer/Array etc...... en gros on peut mettre n'importe quoi
    var = doc.getItemValue("champ") -> tous les éléments du champ
    var = doc.getItemValue("champ")(0) -> la première valeur du champ
    var = cstr(doc.getItemValue("champ")(0)) -> le première valeur de type chaine
    var = cdbl(doc.getItemValue("champ")(0)) => et hop on récupère un double (cass guele si c'est une valeur vide ou de type chaine
    dans ce cas on peut faire = var =... puis isnumeric(var) var = cdbl(var)

    et ça compliquerait le code, exemple champ texte riche

    dim rtitem

    mon rtitem est de type variant (défaut)

    ainsi je peux soit faire un getFirstItem et récupérer un NotesItem, soir récupérer un NotesRichTextItem. ce qui fait que le type de ma variable étant de type variant, le code peut s'adapter..... à moi ensuite de gérer les méthodes ou propriétés en fonction du type de ma variable. Mais je n'aurai qu'une variable pour tous les cas de figures.....

    De plus c'est dans les specs Microsoft (pour rappel LotusScript vient de Microsoft à l'origine)

  8. #8
    Membre averti
    Homme Profil pro
    Consultant Lotus Notes/Domino
    Inscrit en
    Juin 2015
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Lotus Notes/Domino
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 312
    Points : 397
    Points
    397
    Par défaut
    Oui, le Designer te signale à la compilation les erreurs de syntaxe, mais dans ton cas cette syntaxe est tout à fait autorisée.

    A l'époque où je me suis rendu compte de cette erreur, je me suis dit que j'avais lu la spec en diagonale trop vite.
    Ensuite j'ai vu que d'autres faisaient la même erreur. Ce doit être viral, tu vois l'erreur traîner chez les autres et sur internet, et tu la reproduis. Et comme la plupart du temps ça marche quand même, on entérine le truc

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Jérôme Deniau Voir le message
    Oui: option "strict" dans les déclarations à demander à IBM

    Non: car dans les speechs Microsoft le type par défaut est VARIANT, donc toute déclaration d'une variable sans type est d'office de type VARIANT.

    Exemple:
    dim Var

    Var peut être de type String/Integer/Array etc...... en gros on peut mettre n'importe quoi
    var = doc.getItemValue("champ") -> tous les éléments du champ
    var = doc.getItemValue("champ")(0) -> la première valeur du champ
    var = cstr(doc.getItemValue("champ")(0)) -> le première valeur de type chaine
    var = cdbl(doc.getItemValue("champ")(0)) => et hop on récupère un double (cass guele si c'est une valeur vide ou de type chaine
    dans ce cas on peut faire = var =... puis isnumeric(var) var = cdbl(var)

    et ça compliquerait le code, exemple champ texte riche

    dim rtitem

    mon rtitem est de type variant (défaut)

    ainsi je peux soit faire un getFirstItem et récupérer un NotesItem, soir récupérer un NotesRichTextItem. ce qui fait que le type de ma variable étant de type variant, le code peut s'adapter..... à moi ensuite de gérer les méthodes ou propriétés en fonction du type de ma variable. Mais je n'aurai qu'une variable pour tous les cas de figures.....

    De plus c'est dans les specs Microsoft (pour rappel LotusScript vient de Microsoft à l'origine)
    Bonjour

    Effectivement c'est bien pratique d'avoir le type Variant. Mes principaux problèmes en développement sont la communication des données entre la Classe Domino et le Lotusscript. Je patauge un peu des fois quand je récupère la valeur d'un champ. Par exemple

    Dim chaine as String
    chaine = Doc.FieldGetText ("Nom_AGENT")

    me rendait une erreur alors que je m'en sort avec un
    chaine = Doc.Nom_AGENT ( 0 )

    Manque d'habitude je pense car ça fait trois années que je ne m'était pas replongé dans le LotusScript...

    Cordialement.

    A

  10. #10
    Membre habitué
    Homme Profil pro
    Geek
    Inscrit en
    Avril 2007
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Geek

    Informations forums :
    Inscription : Avril 2007
    Messages : 452
    Points : 175
    Points
    175
    Par défaut
    euh...

    FieldGetText c'est pour NotesUIDocument.
    pour NotesDocument c'est getItemValue...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Michael.RHAN Voir le message
    euh...

    FieldGetText c'est pour NotesUIDocument.
    pour NotesDocument c'est getItemValue...
    Merci Michael ! Tu vois je suis nul en classes.... Merci de ta correction j'ai tapé ça de mémoire !!!!

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant(e)]Convertir un string en integer
    Par BernardT dans le forum Langage
    Réponses: 8
    Dernier message: 20/07/2010, 14h40
  2. Réponses: 4
    Dernier message: 29/12/2005, 17h51
  3. convertir un Double en integer
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/08/2005, 09h08
  4. Comment peut on integer des controles dans un prog opengl
    Par franck31400 dans le forum OpenGL
    Réponses: 2
    Dernier message: 28/04/2004, 09h06
  5. taille des integer sous Interbase 6.0
    Par kinda dans le forum InterBase
    Réponses: 4
    Dernier message: 04/04/2003, 11h34

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