Rechercher un mot dans une chaine de caractère contenu dans un champ

Résolu
cs_tgr74 Messages postés 23 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 26 août 2009 - 14 août 2008 à 18:26
cs_tgr74 Messages postés 23 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 26 août 2009 - 25 août 2008 à 10:40
Salut à tous,
je sollicite votre aide pour rechercher un mot dans un ensemble de chaine de caractère contenu dans un champ de base de données;
je travail actuellement sur un projet de gestion de contact. Tous les contacts (Table contacts) sont issus d'un évèmenent  (Table evenements) et à chaque évènements est associé un objet_evenement.  je voudrais retrouver un ensemble de contact à partir d'un mot contenu dans la chaine de caractère du champ "objet_evenement".
quelqu'un aurait-il idée sur une requete. j'ai essayer le select like sans succès.
merci d'avance de votre promptitude
TgrSoft

5 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 août 2008 à 19:44
un exemple dans Firebird :

AFFAIRE et DEVIS
qui recherche toutes les affaires qui contiennent les mots
BETONS ou OUVRAGE ou  TUYAU ou  RUE ou TROTTOIR
dans Objet de l'affaire avec le numéro et la date du devis de DEVIS

SELECT
  AFFAIRE.OBJET,
  AFFAIRE.NOAFFAIRE,
  DEVIS.NODEVIS,
  AFFAIRE.DATECREATIONAFFAIRE,
  DEVIS.DATEVISACGAVDP
FROM
  AFFAIRE
  INNER JOIN DEVIS ON (AFFAIRE.CODEAFFAIRE = DEVIS.CODEAFFAIRE)
WHERE
  ((upper(AFFAIRE.OBJET) LIKE '%BETONS%') OR
  (upper(AFFAIRE.OBJET) LIKE '%OUVRAGE%') OR
  (upper(AFFAIRE.OBJET) LIKE '%TUYAU%') OR
  (upper(AFFAIRE.OBJET) LIKE '%RUE%') OR
  (upper(AFFAIRE.OBJET) LIKE '%TROTTOIR%'))
 
ORDER BY
  NOAFFAIRE

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 août 2008 à 19:32
bonsoir,
j'ai essayer le select like

C'est effectivement ce qu'il faut faire.
Reste à mettre en place les bonnes jointures et les bonnes syntaxes..

cantador
0
cs_tgr74 Messages postés 23 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 26 août 2009
18 août 2008 à 10:28
bonjour cantador,


j'ai effectivement essayé le select like, mais le resultat n'est pas celui escompté. Le problème est que le paramètre n'est pas connu à l'avance. voici la requete que j'ai essaye dans l'evenèment onchange(delphi) :


select * FICHIER_ADRESSE a, PERSONNE_EVENEMENT b, TYPE_EVENEMENT c
Where a.ID_PERSONNE=b.ID_PERSONNE
And  c.ID_EVENEMENT=b.ID_EVENEMENT
And OBJET_EVENEMENT LIKE quotestr(EditObjet.text+'%')

Tgr74
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 août 2008 à 14:52
...que j'ai essaye dans l'evenèment onchange(delphi)...


l'erreur est ici..

il ne faut surtout pas mettre cette procédure sur un ONCHANGE.
il faut que tu te débrouilles pour la lancer une fois la zone
EditObjet.text entièrement remplie correctement par l'utilisateur.

cantador
0

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

Posez votre question
cs_tgr74 Messages postés 23 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 26 août 2009
25 août 2008 à 10:40
Après plusieurs reflexion et avec l'exemple de firebird que tu m'as proposé, j'ai eu à remplacer la constante "BETONS" par EditObjet.text  et j'ai ceci :
select * FICHIER_ADRESSE a, PERSONNE_EVENEMENT b, TYPE_EVENEMENT c
Where a.ID_PERSONNE=b.ID_PERSONNE
And  c.ID_EVENEMENT=b.ID_EVENEMENT
And OBJET_EVENEMENT LIKE quotestr('%'+EditObjet.text+'%')

le résulat obtenu m'a donné satisfaction.
merci pour l'aide..

TgrSoft
0
Rejoignez-nous