OVH Cloud OVH Cloud

Recherche

11 réponses
Avatar
JCM
Bonjour

je voudrais cr=E9er une form de recherche avec une textbox=20
et une Grid pour :
quand j'ouvre la feuille cela m'affiche toutes les donn=E9es=20
d'une base Access, cela je sais faire, mais
je voudrais =E0 la frappe d'une lettre dans la texbox=20
afficher toutes les donn=E9es qui commencent par cette=20
lettre et quand je frappe la deuxi=E8le lettre toutes les=20
donn=E9es qui commencent par ces deux lettres et ainsi de=20
suite, et l=E0 je ne sais pas faire

Une r=E9ponse m'aiderait beaucoup
Cordialement
JCM

10 réponses

1 2
Avatar
JCM
Bonjour

merci pour ta reponse
j'ai essayé le code suivant mais cela beug dans le select,
il ne reconnait pas LgMot, peut etre ma requete est mal
ecrite ? qu'en penses-tu ?

Private Sub TxtRecherche_Click()
FrmRecherche.Caption = "Recherche d'un client"
'Affichage des enregistrements pour le client sélectionné
Dim LgMot As Integer
LgMot = LTrim(Len(TxtRecherche.Text))

Set ADOaf = New ADODB.Recordset
With ADOaf
.ActiveConnection = ADOcn
.CursorType = adOpenDynamic
.Open "Select client from affaire where left(client,
LgMot)='" & TxtRecherche.Text + "'"
End With
'remplissage de MSRecherche
LaLigne% = 0
Do Until ADOaf.EOF
LaLigne% = LaLigne% + 1
MSRecherche.FixedAlignment(0) = 4
MSRecherche.Rows = LaLigne% + 1
MSRecherche.Row = LaLigne%
MSRecherche.Col = 0
MSRecherche.Text = ADOaf("client")
ADOaf.MoveNext
Loop
End Sub

Merci de ta réponse
Cordialement
JCM
-----Message d'origine-----
j'ai fait u ntruc dans le genre
moi c'etait un combobox qui se remplis tout seul selon ce


qu'y a dedans
Avatar
Denis P
Bonjour JCM,

Tu devrais plutôt coder tout cela dans l'évènement Change de ta zone de
texte plutôt que dans l'évènement Click, de cette façon chaque fois que tu
entreras un caractère dans ta zone la recherche s'effectuera.

Ensuite, tu devrais changer cette ligne

LgMot = LTrim(Len(TxtRecherche.Text))

par celle-ci

LgMot = Len(Trim(TxtRecherche.Text))

simplement inverser ton Trim avec ton Len, parce que tu allais d'abord
chercher la longueur de ta chaîne et ensuite tu effectuais ton Trim, alors
que tu dois faire l'inverse.

Ensuite l'erreur dans ta requête.

.Open "SELECT client FROM affaire WHERE LEFT(client, " & LgMot & ") LIKE '"
& Trim(TxtRechereche.Text) & "'"

Maintenant ça devrait fonctionner.

Denis P

"JCM" a écrit dans le message de
news:0a0f01c3d46b$fbccad70$
Bonjour

merci pour ta reponse
j'ai essayé le code suivant mais cela beug dans le select,
il ne reconnait pas LgMot, peut etre ma requete est mal
ecrite ? qu'en penses-tu ?

Private Sub TxtRecherche_Click()
FrmRecherche.Caption = "Recherche d'un client"
'Affichage des enregistrements pour le client sélectionné
Dim LgMot As Integer
LgMot = LTrim(Len(TxtRecherche.Text))

Set ADOaf = New ADODB.Recordset
With ADOaf
.ActiveConnection = ADOcn
.CursorType = adOpenDynamic
.Open "Select client from affaire where left(client,
LgMot)='" & TxtRecherche.Text + "'"
End With
'remplissage de MSRecherche
LaLigne% = 0
Do Until ADOaf.EOF
LaLigne% = LaLigne% + 1
MSRecherche.FixedAlignment(0) = 4
MSRecherche.Rows = LaLigne% + 1
MSRecherche.Row = LaLigne%
MSRecherche.Col = 0
MSRecherche.Text = ADOaf("client")
ADOaf.MoveNext
Loop
End Sub

Merci de ta réponse
Cordialement
JCM
-----Message d'origine-----
j'ai fait u ntruc dans le genre
moi c'etait un combobox qui se remplis tout seul selon ce


qu'y a dedans
Avatar
Zoury
> LgMot = Len(Trim(TxtRecherche.Text))



ou encore mieux... par :
'***
LgMot = Len(Trim$(TxtRecherche.Text))
'***

:O)))

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
seb-seb
le $ est vraiment utile ?

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
> LgMot = Len(Trim(TxtRecherche.Text))

ou encore mieux... par :
'***
LgMot = Len(Trim$(TxtRecherche.Text))
'***

:O)))

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous




Avatar
François Picalausa
Bonjour/soir,

Le $ évite de passer par un variant de sous type string (remplacer variant
par lent, ça revient au même.. sauf pour VB qui cvonnait pas le type lent
:-P ) et permet d'avoir directement un retour de type string (plus rapide).

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"seb-seb" a écrit dans le message de
news:
le $ est vraiment utile ?

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
> > LgMot = Len(Trim(TxtRecherche.Text))
>
> ou encore mieux... par :
> '***
> LgMot = Len(Trim$(TxtRecherche.Text))
> '***


Avatar
Zoury
Salut Seb! :O)

le $ est vraiment utile ?



Trim() Reçoit et renvoit du Variant alors que
Trim$() Reçoit et renvoit du String

Le type Variant étant très lent, cela rend la version Trim$() environ 15% à
20% plus rapide que son homophone en plus d'utiliser le bon type de données.
C'est la même chose pour toutes les autres fonctions des chaines de
caractères qui offrent les 2 versions (Left$(), Right$(), LCase$(), ...)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
seb-seb
je veux bien croire mais quand on defini ses variables et qu'on definie un
string y doit bien voir que ca sert a rien de passer par un variant


"François Picalausa" a écrit dans le message de
news:OA$
Bonjour/soir,

Le $ évite de passer par un variant de sous type string (remplacer variant
par lent, ça revient au même.. sauf pour VB qui cvonnait pas le type lent
:-P ) et permet d'avoir directement un retour de type string (plus


rapide).

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"seb-seb" a écrit dans le message de
news:
> le $ est vraiment utile ?
>
> "Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
> news:
> > > LgMot = Len(Trim(TxtRecherche.Text))
> >
> > ou encore mieux... par :
> > '***
> > LgMot = Len(Trim$(TxtRecherche.Text))
> > '***




Avatar
seb-seb
et sur un 2600+ dans une appli pas trop grosse ca se voit pas forcement


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut Seb! :O)

> le $ est vraiment utile ?

Trim() Reçoit et renvoit du Variant alors que
Trim$() Reçoit et renvoit du String

Le type Variant étant très lent, cela rend la version Trim$() environ 15%


à
20% plus rapide que son homophone en plus d'utiliser le bon type de


données.
C'est la même chose pour toutes les autres fonctions des chaines de
caractères qui offrent les 2 versions (Left$(), Right$(), LCase$(), ...)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous




Avatar
Zoury
Non.. il le converti tout de même.. :O/
Avatar
Zoury
> et sur un 2600+ dans une appli pas trop grosse ca se voit pas forcement



Non en effet... mais c'est tout de même une meilleure pratique de
programmation...

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
1 2