Rechercher un mot dans une chaine de caractère contenu dans un champ [Résolu]

Signaler
Messages postés
23
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
26 août 2009
-
Messages postés
23
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
26 août 2009
-
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

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
23
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
26 août 2009

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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
...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
Messages postés
23
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
26 août 2009

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