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

VB 6 et antérieur Discussion :

[VB6] Erreur 16 : Expression too complex


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut [VB6] Erreur 16 : Expression too complex
    Bonjour,

    En affectant la valeur de la fonction Timer() à une variable de type Single, j'obtiens une erreur 16 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Expression too complex !
    Curieux de savoir pourquoi, en pas à pas, la valeur de mon Single est au moment du DEBUG égale à :
    Après un autre essai dans les mêmes conditions (Une belle procédure de plusieurs centaines de lignes - incluant les appels d'autres procédures) j'ai obtenu un :
    Ce qui évidement, empêche tout calcul ultérieur, qui plus est, une erreur est levée.
    Le pire, si je repositionne mon curseur sur la ligne de l'instruction, la fonction Timer() possède bien la valeur attendue et ma variable également mais en débogage et après un deuxième passage.

    Avez-vous déjà rencontré ce problème ?

    Il n'y a rien d'urgent dans ce thread... C'est juste une curiosité ; j'ai contourné le problème avec la fonction Now()...

    Merci.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    J'utilise assez souvent la fonction Timer et je n'ai jamais eu ce problème.

  3. #3
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    On peut voir le code où tu utilises cette fonction ? Tu as bien un départ et une fin ?

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Moui...
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sngStart=Timer
    [....]
    sngEnd=Timer
    sngGap=sngEnd-sngStart

    Tu sais, j'ai bien tournicoté autour du truc pour déterminer la cause de ce comportement... en vain.
    Mais du fait que le code ne semblait pas être pourvu d'ambiguité, j'ai du me rabbattre sur une solution tièrce plutôt que de chercher à comprendre un un sigle qui prend une valeur String, hummm...
    Comme je l'ai précisé, les [....] contiennent plusieurs centaines de lignes si j'inclu les appels d'autre procédures...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut
    Que donne le code (fonction Retard()) suivant chez toi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Option Explicit
    Public Sub Retard(Dure As Single)
    Dim R As Single
        R = Timer
        Do While Timer < R + Dure
            DoEvents
        Loop
    End Sub
     
    Private Sub Form_Load()
    Dim sngStart As Single, sngEnd As Single, sngGap As Single
    sngStart = Timer
    Retard 3.55 'retard de 3,55 Sc
    sngEnd = Timer
    sngGap = sngEnd - sngStart
    Label1 = sngGap
    End Sub
    Car comme les autres intervenants, chez moi il n'y a pas de probléme.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Curieux en effet...

    Combien de temps prennent les instructions [....] pour s'exécuter (à peu près) ?

    Je n'ai aucune idée tellement brillante, j'essaie juste de trouver des pistes avec toi...

    Ton horloge est bien à l'heure ? (je sais, je dis n'importe quoi, mais des fois...)

    J'y songe... tu as un DoEvents au début de tes instructions [....] ?

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par argyronet Voir le message
    Le pire, si je repositionne mon curseur sur la ligne de l'instruction, la fonction Timer() possède bien la valeur attendue et ma variable également mais en débogage et après un deuxième passage.
    ce qui donne à penser qu'un calcul a, entre-temps, pu être ainsi conduit à son terme.
    Appel d'une procédure... d'une fonction ?.... trop complexe et dont le résultat est utilisé acilleurs ? (je pense que tel est le cas).

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Merci pour vos suggestions...
    En fait, la variable de début et celle de fin entourent effectivement un grand lot d'appels de sous procédures avec un temps d'exécution aléatoire (de l'ordre de la seconde à plusieurs dizaines de secondes)
    Ces appels incluent en autres, des écritures en base, d'autres dans un LOG, des exécutions SQL à gogo et ce, d'une façon très structurelle spécifiée dans un fichier INI. L'exécution du code est issu d'un composant DLL développé lui-même sous VB6.
    Ce comportement est le seul qui a bloqué une exécution de façon aléatoire où, justement, le LOG a inscrit l'erreur en question.
    J'ai d'ailleurs eu du mal à reproduire l'erreur en mode pas à pas car dans 8 cas sur 10, ça marchait sans erreurs.
    Donc, comme j'avais peu de temps devant moi, j'ai contourné, le but était simplement d'obtenir le temps d'exécution entre deux appels.

    Pour info, moi non plus, je n'ai jamais rencontré de problème avec la fonction Timer excepté cette fois là et je me suis dit qu'en postant que peut-être quelqu'un l'avait eu également.

    ProgElecT, ton code s'exécute sans erreur... Bien évidement.

    Ce que j'en conclu et pour clore le débat, c'est qu'il existait une vulnérabilité dans la procédure en question avec ce Timer et qui ne survient pas avec Now().

    Merci en tout cas et bonne continuation.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

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

Discussions similaires

  1. Erreur 3071 - Expression trop complexe !
    Par caesar23 dans le forum IHM
    Réponses: 3
    Dernier message: 15/06/2010, 11h26
  2. Réponses: 33
    Dernier message: 16/01/2009, 14h02
  3. Erreur sur OpenReport : Expression trop complexe
    Par Mariboo dans le forum Access
    Réponses: 6
    Dernier message: 22/06/2006, 11h52
  4. [VBA-E] Erreur 16 expression trop complexe
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/04/2006, 11h44
  5. [VB6] Erreur 9 sur redim preserve
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/10/2002, 17h29

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