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 :

Dépassement de capacité


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut Dépassement de capacité
    Slt

    voila, j'ai fait un programme VB6 qui tourne pas mal, mais depuis peu, toujours sur les mêmes enregistrements (lors d'un parcours de recordset), il me pete une erreur : Code 6 - Dépassement de capacité.

    J'ai bien essayé de passer en mode debug, mais en vain car en mode debug, tout marche nickel.

    Je ne sais pas trop quoi faire pour réparer cette erreur.

    Est-il possible de vider la mémoire comme on peut le faire en Java (garbage collector...)?

    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    voila, j'ai fait un programme VB6 qui tourne pas mal, mais depuis peu, toujours sur les mêmes enregistrements (lors d'un parcours de recordset), il me pete une erreur : Code 6 - Dépassement de capacité.
    Voyons un peu ce code ?

  3. #3
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    OK, en fait, je pensais que VB6 gérait bien les opérations sur les String...

    Apparement non, car il me mettait une erreur lorsque j'essayais la chose suivante:

    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
        Dim Second_Temp As String
        Dim Minute_Temp As String
        Dim Heure_Temp As String
        Dim valeur_de_retour as String
     
        Second_Temp = val(Right(Time1, 2))
        Minute_Temp = val(Mid(Time1, 4, 2)) + val(tmp)
        Heure_Temp = val(Left(Time1, 2))
     
        If Minute_Temp > 59 Then
            Minute_Temp = Minute_Temp - 60
            Heure_Temp = Heure_Temp + 1
        End If
        If Heure_Temp > 23 Or Heure_Temp < 0 Then
            Heure_Temp = Heure_Temp - 24
        End If
        valeur_de_retour = Format(Heure_Temp, "0#") & ":" & Format(Minute_Temp, "0#") & ":" & Format(Second_Temp, "0#")

    En changeant le type de second_temp, minute_temp, et heure_temp, ca "résout" mon problème.

    Y'a encore un truc que j'ai mal fait?


    Désolé pour le dérangement

  4. #4
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Plus haut tu disais que c'est un problème de recordset alors que dans le code il n y a pas de recordset

  5. #5
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Ben en fait, j'étais persuadé que le problème venait d'un RecordSet.

    Ce que je voulais dire avec l'histoire du RecordSet, c'est que je sais d'avance que sur l'enregistrement 618 et 652, il va me péter une erreur de dépassement de capacité.

    Et je ne pige pas pourquoi.

    Apparement, c'était à cause du type des variables dans le code juste au dessus... M'enfin, ce qui me paraît bizarre, c'est que ce soit toujours sur les mêmes enregistrements.

  6. #6
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Heu, toujours dans la catégorie "Erreur VB6", je demande "Dépassement de capacité" (elle me manquait pas cette erreur... )


    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
        Dim return_value As Boolean
        Dim idx As Integer
        Dim size_tmp As Integer
        Dim code_tmp As Integer
        Dim cod_err_tmp As Integer
        Dim cod_fct_tmp As Integer
        Dim cod_err_tmp2 As Integer
        Dim cod_fct_tmp2 As Integer
        
        return_value = False
        idx = 1
        size_tmp = tab_destinataire(idx_dest).size_tab_stat_get
        
        Do While idx < size_tmp And return_value = False
            code_tmp = tab_destinataire(idx_dest).get_value_tab(idx).code_get
            cod_err_tmp = tab_destinataire(idx_dest).get_value_tab(idx).cod_err_get
            cod_fct_tmp = tab_destinataire(idx_dest).get_value_tab(idx).cod_fct_get
            cod_err_tmp2 = val(ModTraitErr.tab_info(15))
            cod_fct_tmp2 = val(ModTraitErr.tab_info(2))
            If code_tmp = COD_STAT _
                And cod_err_tmp = cod_err_tmp2 _
                And cod_fct_tmp = cod_fct_tmp2 Then
                    return_value = True
            Else
                idx = idx + 1
            End If
        Loop

    J'ai souligné l'endroit de l'erreur en bleu. ModTraitErr.tab_info est un tableau de String. Qu'est ce que je fais mal encore?

  7. #7
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    a mon avis la valeur contenu dans ton tableau, convertie en Val, dépasse la capacité d'un Integer (-32 768 à 32 767)

  8. #8
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Y'a-t-il un moyen de la connaître cette taille?

    Mais c'est pas normal parce que normalement je n'ai qu'un code à deux chiffres dedans...

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par _ChToM_
    Mais c'est pas normal parce que normalement je n'ai qu'un code à deux chiffres dedans...
    Eh bien, vérifie...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print ModTraitErr.tab_info(15)
    Devrait te conforter dans ce que tu penses ou t'ouvrir les yeux.

  10. #10
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Debug.Print "NOUVEAU!"
        Do While idx < size_tmp And return_value = False
            code_tmp = tab_destinataire(idx_dest).get_value_tab(idx).code_get
            cod_err_tmp = tab_destinataire(idx_dest).get_value_tab(idx).cod_err_get
            cod_fct_tmp = tab_destinataire(idx_dest).get_value_tab(idx).cod_fct_get
            Debug.Print "$" & val(ModTraitErr.tab_info(15)) & "$"
                idx = idx + 1
        Loop
        Debug.Print "FIN!"

    me donne :

    ...
    NOUVEAU!
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    FIN!
    NOUVEAU!
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    FIN!
    NOUVEAU!
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    FIN!
    NOUVEAU!
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    $6$
    FIN!
    ...



    Je peux me conforter ou aller me laver les yeux?

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par _ChToM_
    Ce que je voulais dire avec l'histoire du RecordSet, c'est que je sais d'avance que sur l'enregistrement 618 et 652, il va me péter une erreur de dépassement de capacité.
    Tu as laissé tourner le test jusqu'à l'enregistrement 618?

  12. #12
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Heu, c'est possible que le fait de redémarrer mon logiciel VB change quelque chose au probléme...

    Parce que la maintenant, ca marche nickel...


    Pourquoi c'est toujours sur moi que ca tombe les erreurs a la con...

  13. #13
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par AlainTech
    Tu as laissé tourner le test jusqu'à l'enregistrement 618?
    Ouaip, jusqu'au 1000

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par _ChToM_
    c'est toujours sur moi que ca tombe les erreurs a la con...
    Dis-le encore...
    L'Univers t'entendra!

    Un p'tit résolu, p't-êt'?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Re,

    pas mal de choses bizarres ici :

    déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Dim Second_Temp As String
        Dim Minute_Temp As String
        Dim Heure_Temp As String
     
        Second_Temp = val(Right(Time1, 2))
        Minute_Temp = val(Mid(Time1, 4, 2)) + val(tmp)
        Heure_Temp = val(Left(Time1, 2))
    tu déclares des variables "String" et tu leur assignes une valeur numérique

    Puis tab_info() est un tableau non ? Montre-nous la déclaration de celui-ci ? Est-ce que tu le redimensionnes ?

  16. #16
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par AlainTech
    Dis-le encore...
    L'Univers t'entendra!

    Un p'tit résolu, p't-êt'?
    Ouais ben si mon programme VB m'entend, qu'il fasse bien attention à lui.

  17. #17
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par Phifi
    Re,

    pas mal de choses bizarres ici :

    déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Dim Second_Temp As String
        Dim Minute_Temp As String
        Dim Heure_Temp As String
     
        Second_Temp = val(Right(Time1, 2))
        Minute_Temp = val(Mid(Time1, 4, 2)) + val(tmp)
        Heure_Temp = val(Left(Time1, 2))
    tu déclares des variables "String" et tu leur assignes une valeur numérique

    Puis tab_info() est un tableau non ? Montre-nous la déclaration de celui-ci ? Est-ce que tu le redimensionnes ?
    Ben c'était pour l'exemple, je les ai mis en integer apres, je pensais l'avoir dit (mon " En changeant le type de second_temp, minute_temp, et heure_temp, ca "résout" mon problème." voulait dire ça en fait . Désolé pour la confusion).


    Pour tab_info(), c'est bien un tableau.

    Voici sa déclaration : Public tab_info(17) As String

    Pas de redimension. Je change juste les valeurs contenues dans ce tableau au fur et à mesure du programme.

  18. #18
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    bon en fait, rien n'est résolu, je crois que mon programme m'a entendu quand je l'ai critiqué. Toujours la même erreur, "Dépassement de capacité"

    Voici ce que j'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Debug.Print "NOUVEAU!"
        Do While idx < size_tmp And return_value = False
            Debug.Print "$" & val(ModTraitErr.tab_info(2)) & "$"
            idx = idx + 1
        Loop
        Debug.Print "FIN!"
    Ce que je ne comprends vraiment pas, c'est que lorsque j'ajoute un espion sur le val(ModTraitErr.tab_info(2)), il me dit bien que la valeur "1" est contenue dedans.


    Et lorsque je suis en mode debug, ca passe sans problème...



    Et j'ai encore plus marrant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         Do While idx < size_tmp And return_value = False
            idx = idx + 1
        Loop
    Quand je fais ceci, ca me pete une erreur "Expression trop complexe" sur cette ligne la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ProgressBar1.value = val

    non mais sérieux, c'est moi ou...

  19. #19
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    val est un mot réservé correspondant à une fonction, change le nom de ta variable ou mets nous toute la ligne, parce que là, soit il en manque un morceau, soit tu es à l'ouset

  20. #20
    Nouveau membre du Club Avatar de _ChToM_
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 111
    Points : 27
    Points
    27
    Par défaut
    Bon, apres avoir pris en compte ta remarque, j'ai changé le nom de ma variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub MajProgressBar(ByVal new_val As Integer)
        ProgressBar1.value = new_val
    End Sub
    Mais ca ne change rien du tout... C'est toujours trop complexe pour lui...

    (Suis pas totalement à l'ouest, ca me rassure )

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/10/2014, 16h08
  2. Transaction, Dépassement de capacité
    Par SkYsO dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 23/12/2008, 14h56
  3. Dépassement de capacité
    Par jean-pierre96 dans le forum Access
    Réponses: 2
    Dernier message: 10/05/2006, 16h04
  4. Réponses: 8
    Dernier message: 06/02/2006, 14h34
  5. détection de dépassement de capacité
    Par tut dans le forum C++
    Réponses: 10
    Dernier message: 01/12/2004, 22h11

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