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 13272 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 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 juin 2009 à 15:17
très bien

n'oublie pas de valider dans ce cas
++

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