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

VBA Access Discussion :

Champ texte indépendant et plantage


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Champ texte indépendant et plantage
    Bonjour,

    Je suis confronté à un problème inattendu... J'ai un champ texte de type mémo indépendant dans lequel j'affiche un message en fonction de certaine valeur et seulement dans certains cas...
    Le principe de fonctionnement est simple (je suis (très) amateur) : à chaque itération, pour éviter de perdre le contenu je dis à Access de copier le contenu et de lui rajouter les valeurs... et ainsi de suite.
    J'ai un plantage aléatoire au-delà de 500/600 caractères. Je tombe directement sur le "envoyer le rapport d'erreur"...
    Quand je mets un LEN pour compter mes caractères j'arrive à peine à 1000... alors que la longueur maxi doit être de 65k...
    Est-ce un problème de paramètrage de mon champ texte/mémo... Y a-t-il une autre façon de faire pour stocker le contenu de chaque résultat (mais la je ne sais pas faire)...

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 549
    Points
    24 549
    Par défaut
    Bonjour,

    es-tu à jour des services pack pour Office 2003 ?

    C'est la première des choses qu'il faut vérifier avant d'aller plus loin.

    Cordialement,

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je pense mais je n'ai pas la main sur mon poste c'est l'administration réseau qui s'occupe de ça...

    Après plusieurs tests, j'ai l'impression que le problème ne vient pas forcément du champ mais du nombre d'enregistrement à lire... Je mets une copie du code...

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Private Sub Controle_Click()
     
    Dim rsMyRS As Recordset
    Dim Msg, Style, Title, Response, MyString, Aconvertir, NumEmployTexte, Profil As String
    Dim MaDate As Date
    Dim NumEmployNombre As Long
     
     
    Set rsMyRS = Me.Recordset
     
    'Va au premier enregistrement
    rsMyRS.MoveFirst
     
    'Initialisation des listes à Null
    Me.Liste_Erreurs.Value = Null
     
    'Rend la liste des erreurs invisible
    Me.Liste_Erreurs.Visible = False
    Me.Étiquette_Liste_Erreurs.Visible = False
    Me.Légende.Visible = False
     
    'Contrôle en boucle de l'ensemble des enregistrements de la Table A
    If Not rsMyRS.EOF Then rsMyRS.MoveFirst
    Do While Not rsMyRS.EOF
       'Conversion du N° d'employé en chiffre
        NumEmployTexte = Left(Me.numero_employe.Value, 5)
        NumEmployNombre = CLng(NumEmployTexte)
     
        'Récupération du libellé PROFIL
        If IsNull(Me.profil_utilisateur.Value) Then
            Profil = "Non Renseigné"
        Else
            Profil = Me.profil_utilisateur.Value
        End If
     
     
        'Test sur les plages
        If NumEmployNombre >= 98600 And NumEmployNombre <= 98999 Or NumEmployNombre >= 98600 And NumEmployNombre <= 98999 Or NumEmployNombre >= 85000 And NumEmployNombre <= 85999 Or NumEmployNombre >= 99000 And NumEmployNombre <= 99980 Then
            If Me.profil_utilisateur.Value <> "" Then
                If Me.profil_utilisateur.Value = "Standard" Then
                    rsMyRS.MoveNext
                Else
                 'Affichage de la liste des erreurs
                Me.Liste_Erreurs.Visible = True
                Me.Étiquette_Liste_Erreurs.Visible = True
                Me.Légende.Visible = True
     
                'Affichage de la boite d'erreur
                Msg = "L'utilisateur " & Me.numero_employe.Value & " (" & Me.nom.Value & " " & Me.prenom.Value & ") est en erreur. Voulez-vous continuer ?"
                Style = vbYesNo + vbCritical + vbDefaultButton2
                Title = "Erreur dans la comparaison"
     
                Response = MsgBox(Msg, Style, Title)
     
                If Response = vbYes Then
                    Me.Liste_Erreurs.Value = Me.Liste_Erreurs.Value & vbCrLf & Me.numero_employe.Value & " | " & Me.nom.Value & " " & Me.prenom.Value & " | " & Profil
                    rsMyRS.MoveNext
                Else
                    Me.Liste_Erreurs.Value = Me.Liste_Erreurs.Value & vbCrLf & Me.numero_employe.Value & " | " & Me.nom.Value & " " & Me.prenom.Value & " | " & Profil
                    Exit Do
                End If
            End If
            Else
            rsMyRS.MoveNext
            End If
     
        Else
            If Me.profil_utilisateur.Value = Forms![VALIDATION DES PROFILS].Form![SF_ProfilBE]![Profils BE].Value Then
                Me.Date_Out.Visible = False
                rsMyRS.MoveNext
            Else
                'Test Si l'utilisateur est multimédia
                If ((NumEmployNombre >= 96000 And NumEmployNombre <= 96999) Or (NumEmployNombre >= 98000 And NumEmployNombre <= 98599)) And Me.profil_utilisateur.Value = "Multimédia" Then
                rsMyRS.MoveNext
                Else
     
                'Affichage de la liste des erreurs
                Me.Liste_Erreurs.Visible = True
                Me.Étiquette_Liste_Erreurs.Visible = True
                Me.Légende.Visible = True
     
                'Affichage de la boite d'erreur
                Msg = "L'utilisateur " & Me.numero_employe.Value & " (" & Me.nom.Value & " " & Me.prenom.Value & ") est en erreur. Voulez-vous continuer ?"
                Style = vbYesNo + vbCritical + vbDefaultButton2
                Title = "Erreur dans la comparaison"
     
     
                Response = MsgBox(Msg, Style, Title)
     
                If Response = vbYes Then
                    Me.Liste_Erreurs.Value = Me.Liste_Erreurs.Value & vbCrLf & Me.numero_employe.Value & " | " & Me.nom.Value & " " & Me.prenom.Value & " | " & Profil
                    rsMyRS.MoveNext
                Else
                    Me.Liste_Erreurs.Value = Me.Liste_Erreurs.Value & vbCrLf & Me.numero_employe.Value & " | " & Me.nom.Value & " " & Me.prenom.Value & " | " & Profil
                    Exit Do
                End If
              End If
            End If
        End If
    Loop
    End Sub

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 549
    Points
    24 549
    Par défaut
    Bonjour,

    Ou est le plantage dans le code ?

    Concernant le code je remarque 2 choses :

    Ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Msg, Style, Title, Response, MyString, Aconvertir, NumEmployTexte, Profil As String
    Indique que mes variables suivantes sont de type Variant et non String

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msg, Style, Title, Response, MyString, Aconvertir, NumEmployTexte
    Seule celle-ci est bien du type String
    Et ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rsMyRS.MoveFirst  
    ....
    If Not rsMyRS.EOF Then rsMyRS.MoveFirst
    Tu positionne le curseur sur le premier record.
    puis plus loin dans le code tu testes si il n'est à la fin (EOF) tu te remet au début.
    Si tu es déjà positionné au début et qu'il est Eof il y a de forte chance qu'après un nouveau movefirst tu soit toujours à la fin. Le recordset est vide.

    Sinon à priori aucune instruction n'indique qu'il devrait y avoir un plantage aussi définitif.

    Le Service pack pêut être vu dans la fenêtre A propos. Pas besoin de réveiller l'administrateur.

Discussions similaires

  1. [AC-2010] Formulaires:champs texte indépendant
    Par Chenin84 dans le forum IHM
    Réponses: 7
    Dernier message: 14/08/2011, 07h14
  2. Réponses: 7
    Dernier message: 18/07/2009, 22h42
  3. Champ texte indépendant et valeur
    Par Bonosvox dans le forum IHM
    Réponses: 5
    Dernier message: 19/05/2008, 18h58
  4. [MSDE 2000] Récup champ text depuis proc stockée
    Par Air'V dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/12/2003, 19h47
  5. [Pb : champ Text = pas de valeur par defaut ?]
    Par mat_dum dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 18/08/2003, 12h57

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