Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/11/2011, 17h45   #1
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 148
Points : 36
Points : 36
Par défaut Qui peut m'expliquer ?

Bonjour,

J'ai rencontré un petit souci pour lequel j'ai trouvé la solution mais j'aimerais comprendre pourquoi cela se résoud comme ça.
Voilà. J'ai enregistré une requête dans les QueryDefs sous le nom ListeClients (visibles dans la rubrique Requête des objets de la BDD).
Pour ajouter une clause WHERE à cette requête, je récupère l'instruction SQL dans une variable de type String, et j'utilise la fonction LEFT pour enlever le point-virgule final de cette façon :
Code :
1
2
3
    Dim SQL AS String
    SQL = CurrentDb.QueryDefs!listeClients.SQL
    SQL = Left(SQL, Len(SQL) - 3)
Ce que j'aimerais comprendre, c'est pourquoi il faut enlever 3 caractères au lieu d'un seul. En effet, quand je demande la longueur de la chaîne SQL, le nombre renvoyé est 126. J'ai recompté plusieurs fois et la longueur de l'instruction dans l'objet requête est en fait 124. Il y a apparemment un espace à la fin (que j'ai compté). Comment se fait-il que Len(SQL) renvoie 126 ? Cette fonction compte-t-elle des guillemets ?
Merci pour vos réponses.
Shankara est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/11/2011, 19h36   #2
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut Shankara,

tu ne devrais pas trop te préoccuper de savoir pourquoi ca marche pas. estime toi heureux que ca marche.
j'ai regardé ca rapidement, pour te répondre tous les caractères ne sont pas forcément visible: sans doute 3 caractères parce que tu as le point virgule et le retour à ligne généré automatiquement en fin qui lui prend 2 caractères.
personnellement je te recommande plutot de retirer le point virgule avec REPLACE().

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/11/2011, 19h38   #3
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Si dans la fenêtre d'exécution tu tapes
Code :
?(Right(CurrentDb.QueryDefs("listeClients").SQL, 2)=vbCrLf)
et que tu appuies sur la touche Entrée, ça devrait afficher Vrai.

Ça veut dire que la chaîne de caractère se termine par un retour chariot (vbCrLf),
lequel est constitué de deux caractères dans Windows : Chr(13) + Chr(10).

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/11/2011, 21h38   #4
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 148
Points : 36
Points : 36
Merci pour vos réponses !
Je n'aime pas ne pas comprendre
Shankara est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h05.


 
 
 
 
Partenaires

Hébergement Web