OVH Cloud OVH Cloud

Fonction ?

6 réponses
Avatar
Marie Le Reste
Bonjour tout le monde!!
Je dois faire une fonction en Vb qui doit recherhcer un diagnostic dans une
base de données.J'ai une liste déroulante avec tous les noms des diagnostics
et losque je clik sur l'un d'entre eux, le bon résulatat s'affiche mais
étant donné qu'il ya des milliers de diagnostic j'aimerais donc que si je
tape la première lettre ,il ya ait que les dignostics commençant par cette
lettre qui s'affiche.En résumé,plus tu tapes de lettres moins t'as de
diagnostics dans la liste déroulante.

Exemple:
Je tapes: 'M'
On aura: 'Maladie'
'Malade'
'Miéline'
'Mucose'
'Milieu' (J'invente!!!!)
Je continue en tapant: 'Mi'
On aura: 'Miéline'
'Milieu'


Merci a tous

6 réponses

Avatar
surfeur75
Bonjour, je ne sais pas pour la base de registre, jamais fait ça
avec cette bête, mais par contre, le fait de chercher une partie du mot
devrait je présume se gérer avec les directives de chaînes, voici les
principeles directives de mon pense-bête cocernant le sujet:
CHAINES
EXTACTION D'UN MORCEAU DE CHAINE

De la droite

extraction = Right(chaine, position, nombre_octets)

De la gauche

extraction = Left(chaine, position, nombre_octets)



EXTRACTION D'OCTETS DETEMINES

extraction = Mid(chaine, position, nombre_octets)



RECHERCHE du début vers la fin

position = InStr(depart, ch_examinée, élément_recherché, option_recherche)

position

N° octet de début de chaîne recherchée

option_recherche

-1 en l'état (defaut)

0 binaire

1 textuel



RECHERCHE de la fin vers le début

position = InStrRev(ch_examinée, élément_recherché, depart,
option_recherche)

depart

(-1) = fin de chaîne

position

N° octet de début de chaîne recherchée

option_recherche

-1 en l'état (defaut)

0 binaire

1 textuel

2 bdd Access

COMPARAISON

resultat = StrComp(chaine_1, chaine_2, type_comparaison)

1 < 2 : (-1)

1 = 2 : (0)

1 > 2 : (1)

1(=Null) ou 2(=Null) : Null

type 0 = comparaison binaire

type 1 = coparaison alphanumérique

--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!



"Marie Le Reste" a écrit dans le message de
news: 401f7190$0$32647$
Bonjour tout le monde!!
Je dois faire une fonction en Vb qui doit recherhcer un diagnostic dans


une
base de données.J'ai une liste déroulante avec tous les noms des


diagnostics
et losque je clik sur l'un d'entre eux, le bon résulatat s'affiche mais
étant donné qu'il ya des milliers de diagnostic j'aimerais donc que si je
tape la première lettre ,il ya ait que les dignostics commençant par cette
lettre qui s'affiche.En résumé,plus tu tapes de lettres moins t'as de
diagnostics dans la liste déroulante.

Exemple:
Je tapes: 'M'
On aura: 'Maladie'
'Malade'
'Miéline'
'Mucose'
'Milieu' (J'invente!!!!)
Je continue en tapant: 'Mi'
On aura: 'Miéline'
'Milieu'


Merci a tous




Avatar
surfeur75
J'ai lu "base de registre", en fait c'est "base de données", désolé,
erreur... Ben sinon ça marcherait si tu peux accéder au texte, je ne sais
pas, j'touche pas aux BDD, j'suis artisan, j'fais toujours mes fichiers à la
main...
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!


"surfeur75" a écrit dans le message de news:
#
Bonjour, je ne sais pas pour la base de registre, jamais fait ça
avec cette bête, mais par contre, le fait de chercher une partie du mot
devrait je présume se gérer avec les directives de chaînes, voici les
principeles directives de mon pense-bête cocernant le sujet:
CHAINES
EXTACTION D'UN MORCEAU DE CHAINE

De la droite

extraction = Right(chaine, position, nombre_octets)

De la gauche

extraction = Left(chaine, position, nombre_octets)



EXTRACTION D'OCTETS DETEMINES

extraction = Mid(chaine, position, nombre_octets)



RECHERCHE du début vers la fin

position = InStr(depart, ch_examinée, élément_recherché, option_recherche)

position

N° octet de début de chaîne recherchée

option_recherche

-1 en l'état (defaut)

0 binaire

1 textuel



RECHERCHE de la fin vers le début

position = InStrRev(ch_examinée, élément_recherché, depart,
option_recherche)

depart

(-1) = fin de chaîne

position

N° octet de début de chaîne recherchée

option_recherche

-1 en l'état (defaut)

0 binaire

1 textuel

2 bdd Access

COMPARAISON

resultat = StrComp(chaine_1, chaine_2, type_comparaison)

1 < 2 : (-1)

1 = 2 : (0)

1 > 2 : (1)

1(=Null) ou 2(=Null) : Null

type 0 = comparaison binaire

type 1 = coparaison alphanumérique

--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!



"Marie Le Reste" a écrit dans le message de
news: 401f7190$0$32647$
> Bonjour tout le monde!!
> Je dois faire une fonction en Vb qui doit recherhcer un diagnostic dans
une
> base de données.J'ai une liste déroulante avec tous les noms des
diagnostics
> et losque je clik sur l'un d'entre eux, le bon résulatat s'affiche mais
> étant donné qu'il ya des milliers de diagnostic j'aimerais donc que si


je
> tape la première lettre ,il ya ait que les dignostics commençant par


cette
> lettre qui s'affiche.En résumé,plus tu tapes de lettres moins t'as de
> diagnostics dans la liste déroulante.
>
> Exemple:
> Je tapes: 'M'
> On aura: 'Maladie'
> 'Malade'
> 'Miéline'
> 'Mucose'
> 'Milieu' (J'invente!!!!)
> Je continue en tapant: 'Mi'
> On aura: 'Miéline'
> 'Milieu'
>
>
> Merci a tous
>
>




Avatar
Patrice Henrio
J'ai l'impression que dans un combo box avec une liste déroulante classée
par ordre alphabétique si on tape le début d'un mot la liste se positionne
sur le premier mot correspondant à ce début.
En tout cas dans une appli que j'ai réalisé en VBA sous Excel, c'est comme
cela que ça marche.

"Marie Le Reste" a écrit dans le message de
news:401f7190$0$32647$
Bonjour tout le monde!!
Je dois faire une fonction en Vb qui doit recherhcer un diagnostic dans


une
base de données.J'ai une liste déroulante avec tous les noms des


diagnostics
et losque je clik sur l'un d'entre eux, le bon résulatat s'affiche mais
étant donné qu'il ya des milliers de diagnostic j'aimerais donc que si je
tape la première lettre ,il ya ait que les dignostics commençant par cette
lettre qui s'affiche.En résumé,plus tu tapes de lettres moins t'as de
diagnostics dans la liste déroulante.

Exemple:
Je tapes: 'M'
On aura: 'Maladie'
'Malade'
'Miéline'
'Mucose'
'Milieu' (J'invente!!!!)
Je continue en tapant: 'Mi'
On aura: 'Miéline'
'Milieu'


Merci a tous




Avatar
Marie Le Reste
En effet j'ai reussi à faire ça mais j'aimerais finalment que la Combo box
s'ouvrepour qu'on puisse voir les résultats sans avoir à cliker sur la
fleche!Aurai-tu une idée?



"Patrice Henrio" a écrit dans le
message de news: e$
J'ai l'impression que dans un combo box avec une liste déroulante classée
par ordre alphabétique si on tape le début d'un mot la liste se positionne
sur le premier mot correspondant à ce début.
En tout cas dans une appli que j'ai réalisé en VBA sous Excel, c'est comme
cela que ça marche.

"Marie Le Reste" a écrit dans le message de
news:401f7190$0$32647$
> Bonjour tout le monde!!
> Je dois faire une fonction en Vb qui doit recherhcer un diagnostic dans
une
> base de données.J'ai une liste déroulante avec tous les noms des
diagnostics
> et losque je clik sur l'un d'entre eux, le bon résulatat s'affiche mais
> étant donné qu'il ya des milliers de diagnostic j'aimerais donc que si


je
> tape la première lettre ,il ya ait que les dignostics commençant par


cette
> lettre qui s'affiche.En résumé,plus tu tapes de lettres moins t'as de
> diagnostics dans la liste déroulante.
>
> Exemple:
> Je tapes: 'M'
> On aura: 'Maladie'
> 'Malade'
> 'Miéline'
> 'Mucose'
> 'Milieu' (J'invente!!!!)
> Je continue en tapant: 'Mi'
> On aura: 'Miéline'
> 'Milieu'
>
>
> Merci a tous
>
>




Avatar
Zoury
Salut Marie! :O)

En effet j'ai reussi à faire ça mais j'aimerais finalment que la Combo box
s'ouvrepour qu'on puisse voir les résultats sans avoir à cliker sur la
fleche!Aurai-tu une idée?



Regarde cet exemple :
http://groups.google.com/groups?threadm=%23RxBR3O3CHA.1896%40TK2MSFTNGP10.phx.gbl

--
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
Salut Nicolas! :O)

Tu peux regarder l'exemple en pièce jointe, ou sinon, si tu as vraiment


bcp
d'enregistrements, on pourrait imaginer (bien que cela ne soit pas la
meilleure solution je pense), effectuer une requete à chaque fois du genre
"SELECT * FROM base.table WHERE champ LIKE '" & Text1.Text & "%';"
(MySQL)...



Si, comme tu l'as dit il y a beaucoup d'enregistrements, cette solution
n'est pas envisageable, AMHA. Et ce pour une question de performance.. Il ne
devrait pas de toute façon y avoir autant d'éléments dans une liste. Il
faudrait diviser le groupe d'éléments en sous-catégorie afin de faciliter la
recherche; par ordre alphabétique par exemple. La technique employée dans
ton exemple serait donc encore applicable.


--
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