Recherche d'un texte dans une data base [Résolu]

Pierregeorgesalexandre 23 Messages postés mardi 22 novembre 2005Date d'inscription 5 novembre 2006 Dernière intervention - 22 juil. 2006 à 19:17 - Dernière réponse : yousef450 2 Messages postés dimanche 6 août 2006Date d'inscription 22 mai 2009 Dernière intervention
- 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
Afficher la suite 

8 réponses

Répondre au sujet
cs_jfs59 184 Messages postés mardi 29 avril 2003Date d'inscription 2 février 2010 Dernière intervention - 22 juil. 2006 à 20:30
+3
Utile
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 ...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_jfs59
cs_jfs59 184 Messages postés mardi 29 avril 2003Date d'inscription 2 février 2010 Dernière intervention - 22 juil. 2006 à 20:32
+3
Utile
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 ...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_jfs59
cs_jfs59 184 Messages postés mardi 29 avril 2003Date d'inscription 2 février 2010 Dernière intervention - 22 juil. 2006 à 20:51
+3
Utile
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 ...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_jfs59
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 juil. 2006 à 21:57
+3
Utile
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;





Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
fiba 11 Messages postés jeudi 26 décembre 2002Date d'inscription 14 janvier 2009 Dernière intervention - 24 juil. 2006 à 08:45
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de fiba
Pierregeorgesalexandre 23 Messages postés mardi 22 novembre 2005Date d'inscription 5 novembre 2006 Dernière intervention - 23 juil. 2006 à 07:49
0
Utile
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
Commenter la réponse de Pierregeorgesalexandre
yvessimon 647 Messages postés mardi 22 avril 2003Date d'inscription 9 janvier 2017 Dernière intervention - 24 juil. 2006 à 08:47
0
Utile
Bonjour,


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

yvessimon
Commenter la réponse de yvessimon
yousef450 2 Messages postés dimanche 6 août 2006Date d'inscription 22 mai 2009 Dernière intervention - 8 août 2006 à 13:30
0
Utile
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
Commenter la réponse de yousef450

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.