IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

Fonction soundex (recherche phonétique Oracle 10g)


Sujet :

Forms Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Fonction soundex (recherche phonétique Oracle 10g)
    Bonjour ;
    j’ai créé une table « identification » comporte les champs : numéro, nom, prénom, né le, adresse,…..
    Et je veux lancer une recherche phonétique en utilisant « Soundex » à condition que le résultat sera affiché dans un autre forms qui s’appelle « rechercher ». J’ai tenté de mettre ce programme mais ça marche pas et le résultat final affiche tous les enregistrements.
    SVP aidez-moi.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    declare
    	bs varchar2(200);
    	b varchar2(30);
    	I varchar2(30);
    	nom varchar2(30);
               prenom varchar2(30);
    begin
    	if: identification .nom is null then
    		message ('le champs nom est vide');
    		Raise Form_Trigger_Failure;
    	end if;
    		if: identification .Ne_LE is null then
    		message ('le champ Ne le est vide');
    		Raise Form_Trigger_Failure;
    	end if;
    if:system.record_status='INSERT' then
    bs:=' numéro='||' identification. numéro ';
    Set_block_property('rechercher',default_where,re);
    go_block('rechercher');
    execute_query;
    b:=get_block_property ('rechercher',Query_hits);
    	I :='(upper(prenom) like ''%'||prenom||'%'' and upper(nom) like ''%'||nom||'%'') or 
    (soundex(prenom)=soundex('''||prenom||''') and soundex(nom)=soundex('''||nom||''')) or 
    (upper(prenom) like ''%'||nom||'%'' and upper(nom) like ''%'||prenom||'%'') or 
    (soundex(prenom)=soundex('''||nom||''') and soundex(nom)=soundex('''||prenom||'''))';
    end if;
    if n='1'then
    	go_block(' identification');
    commit_form;
    next_record;
    previous_record;
    else
    	bs:='(Ne_LE='''||to_char (:identification.Ne_LE, 'DD-MON-YYYY')||''' and nom = '''||: identification.nom||''')';
    	bs:=bs||' or (Ne_LE= '''||to_char (:identification.Ne_LE-1,'DD-MON-YYYY')||'''and nom = '''||: identification.nom||''')';
    	bs:=bs||' or (Ne_LE= '''||to_char (:identification.Ne_LE+1,'DD-MON-YYYY')||'''and nom = '''||: identification.nom||''')';
    	set_block_property('rechercher',default_where,bs);
    	execute_query;
    b:=get_block_property('rechercher',query_hits);
    if to_number (n)=0 then
    		go_block(' identification');
    		commit_form;
    		next_record;
    		previous_record;
    end if;
    end if;
    end;

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Ton code n'est pas le vrai (variables "re", "n" qui ne sont pas déclarées, etc..)..

    Donc pour débuguer, tu crées un trigger PRE-QUERY dans le block Rechercher et tu mets ce code afin d'avoir la condition WHERE exécutée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE
    c VARCHAR2(4000);
    BEGIN
    	c := GET_BLOCK_PROPERTY('RECHERCHER', DEFAULT_WHERE);
      Message('DEFAULT_WHERE:'|| c);
      Message(' ');
      c := GET_BLOCK_PROPERTY('RECHERCHER', ONETIME_WHERE);
      Message('ONETIME_WHERE:'|| c);
      Message(' ');
    END;
    Si la condition where n'est pas la bonne, c'est un problème de codage Forms
    Si la condition where est la bonne, c'est un problème de requête SQL.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. [Oracle 10G] Filtrer une requête en fonction d'une autre table
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 27/04/2008, 04h49
  2. Fonction SUBSTR en oracle 10g
    Par girint dans le forum SQL
    Réponses: 2
    Dernier message: 11/06/2007, 15h04
  3. Réponses: 7
    Dernier message: 03/05/2006, 09h05
  4. [Volumétrie] recherche info sous Oracle 10g
    Par LovSylv dans le forum Oracle
    Réponses: 6
    Dernier message: 03/02/2006, 03h04
  5. [ Oracle 10g ] SOUNDEX
    Par fffonck dans le forum Oracle
    Réponses: 2
    Dernier message: 05/10/2005, 10h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo