Problème de ligne de requête avec base access.

Résolu
sancho12345
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012
- 27 juin 2009 à 14:25
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
- 27 juin 2009 à 15:17
Bonjour à tous.


 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


Une petite question qui j’espère sera  pour vous  simple ( Aucun doute)


Voici mon code qui fonctionne bien avec ma base access.


************************************************


Private Sub txt_nom_produit_Change()      ' requête qui permet d'afficher en fonction de la première lettre les produits commençant par cette lettre


 


 



sql_tout_les_noms = "select * from tempsetnoms WHERE reference_pdt LIKE '" & txt_nom_produit & "%' order by reference_pdt "





 





  Call recherchetempsetnoms(sql_tout_les_noms)


 



 





End Sub





***********************************************




Voilà ma question: Comment puis-je faire en modifiant ma requête pour que lorsque je rencontre un – ( du 6) tout ce qui est au delà ne soit pas prit en compte par la recherche mais continu  à écrire dans txt_nom_produit. 




 Exemple : je veux écrire dans mon txt_nom_produit  hors dans ma base je n’ai que  <italique>toutou.bien- il faudrait à partir de <gras>– que la recherche ne fonctionne plus.


 


J’espère que j’ai été clair.


 


Merci bien


 

3 réponses

sancho12345
Messages postés
131
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
18 mars 2012

27 juin 2009 à 15:13
Un grand merci à toiPCPT cela marche trop bien.


 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


Jamais je n'aurais trouvé tout seul.


 


 


Bonne continuation et une bonne journée à toi.


 


 


Encore merci.
3
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
27 juin 2009 à 14:43
salut,

bon, plusieurs choses.....

tu indiques que tu veux tous les noms qui commencent par la lettre saisie
dans ce cas il ne faut pas chercher juste '%N', justement parce que N peut contenir plusieurs lettres
voir LEFT$ dans ce cas

cependant ta 2 question montre que tu peux chercher plusieurs lettres
simple problème d'énoncé peut-être...

bref il faut donc d'abord chercher s'il y a un tiret (6)
si oui, on supprimera ce reste, le % fera son travail
sinon on prendra la première lettre, ou le texte complet (comme tu veux)

on peut en faire une fonction, çà sera plus pratique






Private Function 
getSqlLike(
ByVal 
sText 
As String
,
Optional
bFirst
As Boolean
=
False
)

As String

    Dim iPos As Integer
    
'   cherche le -
et nettoie si trouvé
    iPos = InStr(1, sText, "-")
    If iPos Then sText = Left$(sText, iPos)

'   première ou toutes les lettres
    If bFirst Then sText = Left$(sText, 1)

'   renvoie avec %
    getSqlLike = sText & "%"
End Function





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>






ton code est alors :


sql_tout_les_noms = "SELECT * FROM tempsetnoms WHERE
reference_pdt LIKE '" &

getSqlLike(

txt_nom_produit.text, false) & "' ORDER BY
reference_pdt;"






passe

false

à

true

si tu ne veux que la première lettre
++

<hr size="2" width="100%" />
Motifs de suppression de topic :
*sms, trop de fautes de français
*titre sans rapport (urgent, aidé mwa, ...)
*demande de code complet (copiez et expliquez votre code posant problème)
NB : attention aux rubriques du forum !!      DOTNET VB.NET (2005, 2008), VB VB6, office = dérivés/VBA
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
27 juin 2009 à 15:17
très bien

n'oublie pas de valider dans ce cas
++

<hr size="2" width="100%" />
0