begin process at 2012 02 13 02:39:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > SAISIE SEMI-AUTOMATIQUE

SAISIE SEMI-AUTOMATIQUE


 Information sur la source

Note :
9,67 / 10 - par 6 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de Donnees Niveau :Débutant Date de création :26/05/2003 Date de mise à jour :26/05/2003 18:21:16 Vu :9 715

Auteur : PatriceVB

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note


 Description

Ce code permet de proposer à l'utilisateur une saisie semi-automatique, un peu comme la barre d'adresse d'Internet Explorer.
Pour cela,le code va voir dans une base de données les enregistrements commençant par ce qui a été saisie par l'utilisateur et corrige ce qui est affiché au fur et à mesure de la saisie.
testez-le, je pense que ça vous plaiera :-)
On peut modifier le code et utiliser la méthode find pour avoir un code plus propre et plus rapide, je l'ai mis comme ça pour que tout le monde comprenne le principe :-)

Source

  • 'A mettre dans l'événement keyup d'un textbox
  • (ici lblnomclient)
  • Dim ctext As String
  • Dim start As Integer
  • On Error Resume Next
  • If KeyCode >= 65 And KeyCode <= 122 Then
  • start = LblNomClient.SelStart
  • RcClients.MoveFirst
  • Do While RcClients.EOF <> True
  • If Left((RcClients!nom), start) = LblNomClient.text Then
  • LblNomClient.text = RcClients!nom
  • LblNomClient.SelStart = start
  • LblNomClient.SelLength = Len(LblNomClient.text)
  • TxtClient.text = RcClients!codeclient
  • Exit Sub
  • Else
  • RcClients.MoveNext
  • End If
  • Loop
  • End If
'A mettre dans l'événement keyup d'un textbox
(ici lblnomclient)

Dim ctext As String
Dim start As Integer
On Error Resume Next
If KeyCode >= 65 And KeyCode <= 122 Then
    start = LblNomClient.SelStart
    RcClients.MoveFirst
    Do While RcClients.EOF <> True
    If Left((RcClients!nom), start) = LblNomClient.text Then
        LblNomClient.text = RcClients!nom
        LblNomClient.SelStart = start
        LblNomClient.SelLength = Len(LblNomClient.text)
        TxtClient.text = RcClients!codeclient
        Exit Sub
    Else
        RcClients.MoveNext

    End If

    Loop
End If




 Sources du même auteur

CHEMIN BASE COURANTE ACCESS
MISE À JOUR STRUCTURE BASE ACCESS AVEC ADOX
Source avec Zip EXPORT TABLE ACCESS VERS EXCEL
Source avec Zip POUR LES ACCROS DE CODES-SOURCES
Source avec Zip BDR FACILE : MODULE DE CLASSE

 Sources de la même categorie

Source avec Zip Source avec une capture BIEN ADMINISTRER LES ETUDIANTS ET LEURS CÔTES par okosa
Source avec Zip VBA EXEL GESTION DE PERSONEL NOUVEAU CONTRAT DE TRAVAI par oudlarbi
Source avec Zip Source avec une capture CREATION D'UN OBJET D'ACCÈS AUX DONNÉES par okosa
Source avec Zip Source .NET (Dotnet) MISAHORAIRE par MdelM
Source avec Zip Source avec une capture BASEDEDONNEES,GESTIONDEMALADES,DATABASSE par shadkitenge

Commentaires et avis

Commentaire de ICIoBRa le 26/05/2003 18:55:58

Jé dja vu 1 code komme ça sur le site c'est vrément très pratique.
10/10

Commentaire de EBArtSoft le 26/05/2003 19:08:25 administrateur CS

Bonjour,

C'est vrai que ce genre de code est assez pratique et tu innove sur l'utilisation d'un recordset mais il aurais été tres pratique egalement
de continuer la saisie apres le premier enregistrement je veus dire par exemple tapez plusieurs adresse email a la suite separé par des virgules ....

de plus au lieu d'ouvrir tout la table tu peut n'ouvrir qu'une requete
genre :

openrecordset("SELECT * FROM MaTable WHERE NomClient Like '" & nom & "';")

et afficher une liste dans une listbox en plus de la saisie

enfin bref c'etait juste pour commenter un peu ta source ;-D

b@nne prog

Commentaire de sebmafate le 26/05/2003 19:36:04 administrateur CS

une remarque toute bête...
On ecrit pas : Do While RcClients.EOF &lt;&gt; True
mais : Do While Not RcClients.EOF
car RcClients.EOF est déjà un boolean, c'est comme faire if True=True !!!

Séb

Commentaire de jack le 27/05/2003 15:38:10 administrateur CS

Bien pensé.
Juste un truc aussi :
Au lieu de faire le "Exit Sub" après avoir trouvé le bon nom, utilise plutôt "Exit Do"

Commentaire de Woulouf le 29/05/2003 16:57:48

A koi correspondent "nom" et "code client" (ki suivent un ! dexclamation, dailleurs a koi sert le point dexclamation ?)
Moi je remplace Rclient par un data2.recordset (apres avoir fait un select biensur) , c bien ca ?

Merci @+ Woulouf

Commentaire de PatriceVB le 29/05/2003 17:11:50 administrateur CS

Woulouf&gt;oui mais fo préciser le nom du champ. Moi j'utilise jamais de contrôles DATA je fais tout à la main en ADO c pour ça qu'il y a des trucs que tu reconnais pas...

jack&gt;dans ce cas précis, cela reviendrait au même, mais dans le code, lorsque j'ai mis exit sub c que je voulais sortir de la procédure et pas de la boucle car si il y avé du code après la boucle cela l'exécuterai alors que c pas mon cas.
C'est vrai que ça peut être intéressant d'optimiser le code en remplacant par exit do (même si je suis pas du tout sur que ça optimiserait qque chose) mais il fo éviter d'optimiser à tout va. Imagine que je change le code et que je rajoute qque chose après le code, je perdrais du tps à me rendre compte qu'il fo que je remodifie en exit sub

sebmafate&gt;ta remarque est PRESQUE juste. En effet, on peut écrire do while rcclients.eof car c un booleen mais c juste une facilité d'écriture qui, il est vrai, réduit également le tps d'éxécution. Mais ton exemple est complètement boiteux. Quand tu fait une comparaison avec un entier tu fais pareil. ex : if truc=3 peut revenir à if 3=3. la propriété EOF n'est pas toujours à vraie !

@+

Commentaire de sebmafate le 29/05/2003 19:08:00 administrateur CS

PatruveVB &gt;&gt;&gt; Ok pour l'exemple il était mal choisi, mais pourquoi comparer un boolean à un autre ???

Woulouf &gt;&gt;&gt; le ! permet d'acceder à la propriété par défault, et le "nom" et "CodeClient" correspondent à la référence de l'objet dans la collection. on peut écrire à la place rclients.fields("nom") ou bien rclients("nom"), les 3 syntaxes sont bonnes.

Séb

Commentaire de Woulouf le 30/05/2003 11:53:23

cmt dois je proceder alors en utilisant un controle data ? merci @+ Woulouf

Commentaire de Woulouf le 30/05/2003 12:14:40

encore ds kestions , desolé ms il faut ke jarrive a integrer cette source ds mon prog......la variable ctext n'est ps utilisé , c normal ?
A koi,correspondent  "codeclient" et "nom"
, jve dire a koi servent elles pr toi ?

Merci @+ Woulouf

Commentaire de jack le 01/06/2003 19:15:49 administrateur CS

Salut PatriceVB
En effet, le "Exit Do" ne change rien à la fonctionnalité.
Par contre, il est possible que le programme ne "dépile" pas --&gt; risque qu bout de quelques (nombreux) tours de cycles, car je ne sais pas si la sortie d'une Sub remet à zéro la pile.
Jack &lt;-- Enculeur de mouches patenté

Commentaire de oricheton le 04/06/2003 16:51:35

On peut aussi écrire tout simplement Do Until RcClients.EOF

Commentaire de trabice le 29/09/2004 11:58:07

c pas lourd a utiliser??
sinon c pas mal kan meme :-)

Commentaire de momo190479 le 13/12/2005 23:51:26

Eh bien moi je dit chapeau, c simple et super efficace, surtout que j'ai cherché un peu et je n'ai trouvé nulle part la meme fonction ecrite aussi simplement.
Quand au remarques qui ont été faite je les trouve un peu déplacé , en effet il n'existe pas une seule maniére d'ecrire les boucles par exemple , chacun fait comme il le sent aprés tout, du moment que ça fonctionne !

Commentaire de tony0076 le 22/05/2006 10:05:31

Bonjour je suis debutant en php et j'aimerai bien avoir un exemple  avec le code intégré a la textbox car je n'arrive pas a la faire fonctionner.
merci

Commentaire de tritium89 le 12/05/2009 21:02:55

Bonjour à tous
tout d abord je tien a remercier l'auteur de ce code qui me parait fort utile
probleme je n arrive pas a l'inégrer dans mon code
c est pour cela que je vous demande de me confirmer si j ai bien compris

LblNomClient = nom du textbox
RcClients = nom du recordset ( pourquois n est il pas déclaré?)
nom champ de la table comportant le nom du client
TxtClient = la j avou que je seche ;)
codeclient = nom du champ comportant l id du client

voila ma question est toute simple pouvez vous me confirmer cela
merci de vore reponse

Alexandre
        

Commentaire de cyberloux le 11/11/2010 21:26:20

petite question toute bête: un keyup c'est quoi?

merci et bonne soirée

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales