Recherche d'un texte dans une data base

Résolu
Pierregeorgesalexandre Messages postés 22 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 5 novembre 2006 - 22 juil. 2006 à 19:17
yousef450 Messages postés 2 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 22 mai 2009 - 8 août 2006 à 13:30
bonjour à tous,

j'ai une database dbase dans laquelle je veux effectuer une recherche d'un enregistrement contenant un texte précis.

Comment faire pour que cette recherche soit indépendante de la case utilisée,
je veux trouver Pierre...meme si dans ma recherche je demande :
- pierre
- ou pIerre
- ou PieRRe
etc...

merci à tous ceux qui sauront me conseiller

cordialement

Pierre

8 réponses

cs_jfs59 Messages postés 178 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 2 février 2010
22 juil. 2006 à 20:30
tu impose une casse pour les deux ! tu passe tous en minuscule ou alors tout en majuscule (le mot lu dans la base et celui recherché) .. et tu compare ensuite !

Cordialement jfs.

Tout est en tout et réciproquement ...
3
cs_jfs59 Messages postés 178 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 2 février 2010
22 juil. 2006 à 20:32
si tu est sur du format une majuscule + minuscules tu passe tous en minuscule et ensuite la premiere lettre en majuscule uniquement (pour le mot recherché uniquement cette fois) tu compare ensuite

Cordialement jfs.

Tout est en tout et réciproquement ...
3
cs_jfs59 Messages postés 178 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 2 février 2010
22 juil. 2006 à 20:51
un ti exemple de fonction pour mettre en majuscule la premiere lettre

Function majuscule1erelettre(chaine : string): string;
begin
chaine := Ansilowercase(chaine);
chaine[1] := AnsiUpperCase(chaine)[1];
result := chaine;
end;

mais bon ca doit exister dans les bibliotheques delphi .. j'ai pas cherché...

Cordialement jfs.

Tout est en tout et réciproquement ...
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
23 juil. 2006 à 21:57
je sais pas si dbase possede une syntaxe differente de SQL mais logiquement tu peux faire cela avec le mots clef LIKE :

SELECT * FROM table WHERE name LIKE 'pierre'

sinon dans du texte normal (liste ou memo) on ferait :

// variable globale permettant de recuperer l'index de l'item en cours
var oldindex : integer = -1;

// fonction permettant de chercher la prochaine ligne contenant le texte SFind
function FindAndSelect(const SFind : string; const FromIndex : integer = -1) : integer;
begin
  // on init result a -1
  result := -1;
  // si la liste est vide on sort
  if List.count = 0 then exit;


  // on increment OldIndex

  inc(OldIndex);


  // si on a choisi un index de depart on place la valeur dans OldIndex
  if FromIndex <> -1 then
     OldIndex := FromIndex;

  // on verifie le debordement d'interval
  if OldIndex >= List.count then OldIndex := 0;

  // boucle de recherche
  for i := OldIndex to List.count-1 do
      // si le texte SFind et present dans la ligne
      if pos(lowercase(SFind), lowercase(list.items[i])) <> 0 then begin
         // on recupere l'index dans OldIndex pour la prochaine recherche
         OldIndex := i;
         // on renvois l'index dans le resultat de la fonction
         Result   := i;
         // on selectionne la ligne dans la liste
         list.itemindex := i;
         // on arrete la boucle
         break;
      end;
end;





3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiba Messages postés 11 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 14 janvier 2009
24 juil. 2006 à 08:45
Salut,

Il existe aussi la fonction Locate du composant TTable de Delphi qui retourne avec comme paramètre

Table1.Locate('NOM DE CHAMPS', Chaine à rechercher, [loCaseInsensitive])

Le 3é paramétre [loCaseInsensitive] si tu veux ignorer les différences majuscule minuscule.

Fiba
3
Pierregeorgesalexandre Messages postés 22 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 5 novembre 2006
23 juil. 2006 à 07:49
Bonjour,

merci pour ta réponse rapide et ton aide précieuse,
je mets tes suggestions en pratique tout de suite

bon we et merci encore
cordialement
Pierre
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
24 juil. 2006 à 08:47
Bonjour,


Attention au lettres accentuées é û ....

yvessimon
0
yousef450 Messages postés 2 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 22 mai 2009
8 août 2006 à 13:30
je sais pas si dbase possede une syntaxe differente de SQL mais logiquement tu peux faire cela avec le mots clef LIKE :

SELECT * FROM table WHERE name LIKE 'pierre'

sinon dans du texte normal (liste ou memo) on ferait :

// variable globale permettant de recuperer l'index de l'item en cours
var oldindex : integer = -1;

// fonction permettant de chercher la prochaine ligne contenant le texte SFind
function FindAndSelect(const SFind : string; const FromIndex : integer = -1) : integer;
begin
  // on init result a -1
  result := -1;
  // si la liste est vide on sort
  if List.count = 0 then exit;


  // on increment OldIndex
  inc(OldIndex);


  // si on a choisi un index de depart on place la valeur dans OldIndex
  if FromIndex <> -1 then
     OldIndex := FromIndex;

  // on verifie le debordement d'interval
  if OldIndex >= List.count then OldIndex := 0;

  // boucle de recherche
  for i := OldIndex to List.count-1 do
      // si le texte SFind et present dans la ligne
      if pos(lowercase(SFind), lowercase(list.items[i])) <> 0 then begin
         // on recupere l'index dans OldIndex pour la prochaine recherche
         OldIndex := i;
         // on renvois l'index dans le resultat de la fonction
         Result   := i;
         // on selectionne la ligne dans la liste
         list.itemindex := i;
         // on arrete la boucle
         break;
      end;
end;



merci
0
Rejoignez-nous