Saisie assiste

laurent2403 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -  
laurent2403 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


est ce que quelqu'un pourrait me renseigner pour avoir une saisie assiste sur mes textField , j'aimerais que des la saisie du 2eme ou 3eme caractère une fonction me propose une ou plusieurs solutions en fonction du contenue des tables de ma BD .
merci beaucoup .
A voir également:

2 réponses

arthurg95 Messages postés 2421 Date d'inscription   Statut Membre Dernière intervention   341
 
Bonjour,

Tu mets un ActionListener sur le JTextField, je ne sais pas trop comment il s'active, si c'est à la saisie ou quand on clique dessus pour commencer à saisir, enfin tu t'adaptera.

Et à chaque lettre tapé, tu fais un getText() sur ton jTextField, et tu fais une requête SQL qui correspond à tes critères. Et tu affiches les résultats comme tu veux, dans un panneau, sous la saisie, ... Enfin ça c'est de la mise ne forme ;)

Edit : L'action listener se déclanche sur appuie de la touche entrée ;)

Tout est dit, mais comme personne n'écoute il faut toujours répéter
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Sur le principe je suis d'accord, ce serait donc plutôt un KeyListener sur le JTextFied.

Cependant pour la partie SQL je trouve embêtant de faire des requêtes à chaque fois, ici il y a surement un seul utilisateur donc ça marche mais "en vrai" faire des requêtes sur la base de données à chaque lettre tapée par chaque utilisateur, ça fait beaucoup de requêtes. Il vaudrait mieux faire une seule fois la requête et récupérer tous les mots possibles en cache.
Evidemment cela ne vaut que s'il y a relativement peu de données dans la base, dans le cas contraire, il faut carrément oublier l'idée de l'assistant et se limiter à la recherche du mot complet.
0
arthurg95 Messages postés 2421 Date d'inscription   Statut Membre Dernière intervention   341
 
Ah c'est sûr que s'il n'y a pas qu'un utilisateur, la BDD ne va pas aimer...
Et oui, tu as raison pour le KeyListener, mais comme je ne savais pas comment l'ActionListener fonctionnait sur le JTextField, je trouve toujours plus simple l'utilisation D'actionListener plutôt que Key, ça évite les problème de focus. Mais bon ici pas le choix.

Donc, oui tu peux récupérer une fois la base à partir de 3 lettres par exemple (tu testes les 3 lettres avec un getText() et un lenght).
Et tu mets toutes les entrées dans une liste ou une table (il faut voir au niveau de l'optimisation pour la recherche ensuite). Et a chaque lettre tapé, tu n'affiches que ceux qui correspondent.

Problème : S'il efface une lettre il faut penser à actualiser, si il efface une des 3 premières lettres il faut refaire la requête !
0
laurent2403 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   2
 
OK merci pour votre aide je vais tester ...
0