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

Access Discussion :

Les espaces dans la propriété Text d'une TextBox [AC-2007]


Sujet :

Access

  1. #1
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 147
    Points : 191
    Points
    191
    Par défaut Les espaces dans la propriété Text d'une TextBox
    Bonjour à tous !

    J'utilise un certain nombre de boîtes-texte pour filtrer des enregistrements, ici d'articles en vente

    Nom : BoiteFind.PNG
Affichages : 127
Taille : 2,9 Ko

    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
    Private Sub TextFilterByString_Change()
    On Error Resume Next
     
        'Filtrer les enregistrements correspondants au contrôle.
        'Caution : the 'Text' property of any Textbox only 'exists' while the control has the focus !
                    'We therefore have to save its volatile string
                    'as a more persistant 'Value' inside another control
     
            Dim MyString As String
                MyString = Me.TextFilterByString.Text
            Me.TextFilterByString2.Value = MyString 
     
            SetMyFilters
     
        'Placer le curseur en fin de chaine
            Me.TextFilterByString.SetFocus
            Me.TextFilterByString.SelStart = Me.TextFilterByString.SelLength
     
    End Sub
    Le problème est que je n'arrive pas à faire passer une chaine comportant des espaces !

    Avec ce code, MS Access / VB6 semble toujours trimmer l'espace final avant l'ajout de la lettre qui suit l'espace !

    "anneau large" devient ainsi "anneaul" et ça plante !

    Qu'est que j'ai mal foutu dans ce code ??? Comment faire persister les espaces ???

    Merci d'avance !

    phil

  2. #2
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut Bonjour
    Regarde ce que fait SetMyFilters ? (shift+F2 pour se rendre sur le code de la procédure)

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 793
    Points
    14 793
    Par défaut
    bonjour,
    le problème avec l'évènement Change, c'est qu'il s'exécute à chaque frappe d'un caractère. Ne peux-tu pas à la place utiliser la valeur de ton texte saisi sur l'évènement After_Update de ton contrôle ?

  4. #4
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 147
    Points : 191
    Points
    191
    Par défaut
    Bonsoir Paraffine et merci pour cette réponse !

    "SetMyFilters" est une bête procédure de ma fabrication, qui pose tout simplement un filtre sur le recordset du sous-formulaire.

    Ici elle pose entre-autres un élément de filtre avec LIKE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyFilterStr = MyFilterStr & " AND Produits.DesignationArticle LIKE '*" & Me.TextFilterByString2.Value & "*'"
    Pas de quoi fouetter un chat. Le filtre ne déplace pas non plus le focus.

    La sélection se fait correctement et assez rapidement. Le temps de taper chaque lettre et le filtre a isolé les enregistrements correspondants sur une table de 20.000 lignes. A peine un sursaut.

    A noter que le problème des espaces se reproduit à l'identique qu'il s'agisse de filtrer un sous-formulaire ou de modifier le RowSource d'une listBox...

  5. #5
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 147
    Points : 191
    Points
    191
    Par défaut
    Bonsoir tee_grandbois !

    Effectivement au début j'ai essayé avec After_Update, mais ça m'a posé encore plus de problèmes trop longs à décrire.

    Les anglo-saxons utilisent aussi la propriété Text plutôt que After_Update

    https://stackoverflow.com/questions/...-event-handler

    Text est bien parce qu'il est super rapide et ne demande pas de saverecord.

    Mais à défaut d'autre chose je repasserai bien encore deux heures à tester After_Update, qui sait ???

    Je me demande ce que font les boîtes "Search" de windows...

    1000 fois sur le métier... !

    phil

  6. #6
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut
    Si tu vois les espaces disparaître dans le critère affiché , est-ce que cela pourrait être le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextFilterByString.SelStart = Me.TextFilterByString.SelLength
    J'imagine que SelLength renvoie une longueur, se pourrait-il que l' espace final ne soit pas compté (et soit donc systématiquement écrasé) ?
    Il faudrait regarder avec les outils de débogage...

  7. #7
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 147
    Points : 191
    Points
    191
    Par défaut
    Absolument ça vient de là !

    Je suis en train d'essayer ceci qui semble couvrir tous les cas de figure...

    https://social.msdn.microsoft.com/Fo...orum=accessdev

    Réponse demain, car il est 22.30 ici et j'ai du sable dans les yeux !

    Merci pour tout, je vous tiens au courant !

    phil

  8. #8
    Membre habitué Avatar de harpyopsis
    Homme Profil pro
    Vétérinaire
    Inscrit en
    Octobre 2015
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Indonésie

    Informations professionnelles :
    Activité : Vétérinaire
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 147
    Points : 191
    Points
    191
    Par défaut
    Voilà, il n'y a pas eu besoin d'attendre demain...!

    Il suffisait d'utiliser Chr(32) comme ceci

    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
    Private Sub TextFilterByString_Change()
    'On Error Resume Next
     
        'Filtrer les enregistrements correspondants au contrôle.
        'Caution : the 'Text' property of any Textbox only 'exists' while the control has the focus !
                    'We therefore have to save this volatile string
                    'as a more persistant 'Value' in another control
     
            Dim MyString As String
                MyString = Me.TextFilterByString.Text
            Me.TextFilterByString2.Value = Me.TextFilterByString.Text
            If Right(Me.TextFilterByString.Text, 1) = Chr(32) Then Me.TextFilterByString.Value = Me.TextFilterByString.Value & " "
     
            SetMyFilters
     
        'Placer le curseur en fin de chaine
            Me.TextFilterByString.SetFocus
            Me.TextFilterByString.SelStart = Me.TextFilterByString.SelLength
     
    End Sub
    Selon les cas, on peut avoir besoin d'un FindFirst / FindNext pour sauter d'un enregistement à l'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Dim rs As Object, TxtLenght As Long
                Set rs = Me.Recordset.Clone
     
            rs.FindFirst "[DesignationArticle] LIKE '" & Me![TextAtteindre].Text & "*'"
            If Not rs.EOF Then Me.Bookmark = rs.Bookmark

    Mais dans d'autres cas l'usage d'un filtre concentre mieux tous les enregistrements qui satisfont une condition LIKE en éliminant les autres... C'est plus clair pour l'utilisateur.

    Merci beaucoup pour votre aide, j'espère que cela peut être utile à quelqu'un !

    phil

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

Discussions similaires

  1. supprimer les espaces dans un fichier texte
    Par nguim dans le forum Langage
    Réponses: 3
    Dernier message: 10/03/2014, 13h55
  2. Réponses: 0
    Dernier message: 31/08/2011, 17h42
  3. Supprimer tout les espaces dans un fichier texte
    Par harry le ravi dans le forum VBScript
    Réponses: 3
    Dernier message: 26/06/2009, 10h08
  4. [VBA-A]Remplacer les espaces dans un champ texte
    Par Ericka dans le forum VBA Access
    Réponses: 6
    Dernier message: 17/05/2006, 15h31
  5. [HTML] formulaire gérer les espaces dans un champs texte
    Par renofx1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/01/2006, 14h17

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