Bon Soir
supposons le champ designation contient
disque dur 80
disque dur 40
Lorsque je veux obtenir dur j'utilise like%dur% dans edit.change mais comment faire pour obtenir disque 80 sans tapper dur
Merci
Bon Soir
supposons le champ designation contient
disque dur 80
disque dur 40
Lorsque je veux obtenir dur j'utilise like%dur% dans edit.change mais comment faire pour obtenir disque 80 sans tapper dur
Merci
Remplacer les espaces par des %: disque%80
Delphi 7/XE2/XE3
C#
Oracle 9i à 12c
SQL Server 2008 à 2014
Bonsoir
Merci ,mais ce que je veux : la recherche se fait dans un edit et voici le code:
et le resultat n'abouti pas à se que je veux
Code : Sélectionner tout - Visualiser dans une fenêtre à part ADOQuery1.SQL.Add('select * from Articles where Designation like "%'+Edit1.Text+'%"');
Merci
disque%80
ta question n'est pas claire.
si tu tapes disque%80 dans Edit, la requête sera
select * from Articles where Designation like "%disque%80%"
et tu obtiendras "disque dur 80"
ce qui répond à ta question "comment faire pour obtenir disque 80 sans tapper dur"
si ce n'est pas ce que tu veux il va falloir reformuler ta question.
Ce que je crois avoir compris:
Tu as un jeu de données (exemple);
Disque dur 40
Disque dur 80
Tu veux faire une recherche partielle avec tous les mots contenus dans ton edit.
Si c'est bien ça, il va falloir décomposer ta liste de mots et avoir dans la requête une condition sur la désignation par mot.
Delphi 7/XE2/XE3
C#
Oracle 9i à 12c
SQL Server 2008 à 2014
Bonjour
La requête s'execute au début dans(edit.onchange) et ensuite à chaque vk_space
Ensuite comment?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.Edit1Change(Sender: TObject); begin ADOQuery1.Active:=false; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from Articles where Designation like "%'+Edit1.Text+'%"'); ADOQuery1.Active:=True; end;
Il faut décomposer ton edit1.text pour avoir une liste de mots.
(FAQ: http://delphi.developpez.com/faq/?pa...chaine#explode)
A partir de cette liste, construire ta requête (un critère par mot: Designation like '%Mots[i]').
Essaie de prendre un peu de recul. Tu ne dis pas ce qu'il est juste ou faux dans notre compréhension de ton problème.
Essaie de poser ton algorithme, normalement on t'a donné les clés. Si tu as un problème d'implémentation, montres-nous ce que tu as fait.
Delphi 7/XE2/XE3
C#
Oracle 9i à 12c
SQL Server 2008 à 2014
bonjour
si j'ai bien compris je modifierais le code comme suit :
Par contre en terme de rapidite des requetes, on ne peut pas dire que ce soit optimum (normalement, pour la plupart de BDD, les index ne pourront etre utilises), correct ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TForm1.Edit1Change(Sender: TObject); begin ADOQuery1.Active:=false; ADOQuery1.SQL.Clear; Edit1.Text := StringReplace(Edit1.Text, ' ', '%', [rfReplaceAll]); // pour remplacer tous les espaces vides par le % ADOQuery1.SQL.Add('select * from Articles where Designation like "%'+Edit1.Text+'%"'); ADOQuery1.Active:=True; end;
mais lancer ce type de requete a chaque evenement "onchange", ca risque de devenir penible a cause du temps d'execution cette requete non indexable
a+
olivier
Merci d'ajouter un sur les tags qui vous ont aidé
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager