Bonjour, Mon client exige bien de faire une requête multi critères sur la raison sociale : Ex chercher les clients dont la raison sociale contient : 1) STE 2) BEN PHAR 4) MES [windev]SELECT CLIENT.COD_CLI AS COD_CLI, CLIENT.RAIS_CLI AS RAIS_CLI FROM CLIENT WHERE CLIENT.RAIS_CLI LIKE %{ParamRAIS_CLI1}% AND CLIENT.RAIS_CLI LIKE %{ParamRAIS_CLI2}% AND CLIENT.RAIS_CLI LIKE %{ParamRAIS_CLI3}% ..... AND CLIENT.RAIS_CLI LIKE %{ParamRAIS_CLI10}% [/windev] Existe il une optimisation pour cette requête ?
Bonjour, Il me semble que pour ce genre de cas, l'index FULLTEXT est fait pour ca : Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! En gros, on peut créer un index composé d'une ou plusieurs rubriques (un peu comme les clés composées) sauf qu'on le(s) déclare(nt) comme index FULLTEXT. Ensuite, il suffit de passer les mots en paramètres et ça doit fonctionner.
Bonjour; Je n'ai pas l'habitude de travailler avec SQL, car je ne le maitrise pas encore. Alors l'optimisation du code qui suit est à votre charge. On peut arriver à une solution en utilisant une table et un bouton Code à mettre dans "Sortie d'une ligne de la table", pour le contrôle de saisie : Code (Text): SI SansEspace(TABLE_SansNom1.COL_Nom)="" ALORS TableSupprime(TABLE_SansNom1) FIN Remplacer EMPLOYE par ton fichier ainsi que * par les rubriques désirées dans le Code du bouton : Code (Text): sdReq est une Source de Données sMareq est une chaîne =[ SELECT * FROM EMPLOYE WHERE ] SI TABLE_SansNom1..Occurrence<1 ALORS Info("Table Vide") SINON // Ajouter la valeur de la première ligne sMareq = ChaîneConstruit(sMareq+RC+"Employe.Nomfr LIKE '%"+SansEspace(TABLE_SansNom1.COL_Nom[1])+"%'") // Ajouter les valeurs des autres lignes ou cas où ça existent POUR i = 2 _A_ TABLE_SansNom1..Occurrence sMareq = ChaîneConstruit(sMareq+" OR "+"Employe.Nomfr LIKE '%"+SansEspace(TABLE_SansNom1.COL_Nom)+"%'") FIN // Execution de la requête SI PAS HExécuteRequêteSQL(sdReq,hRequêteDéfaut, sMareq) ALORS Erreur(HErreurInfo()) SINON // Traitement à faire Info("La requête contient " + HNbEnr(sdReq) + " enregistrements.") FIN FIN Bon Dev.
Ce bout de code doit surement fonctionner, mais est dangereux à l'utilisation. Que se passera t'il si la raison sociale contient un "%" ou une apostrophe ? Il faudra gérer toutes ces exceptions en manuel.. quelle galère !
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! Ce bout de code doit surement fonctionner, mais est dangereux à l'utilisation. Que se passera t'il si la raison sociale contient un "%" ou une apostrophe ? Il faudra gérer toutes ces exceptions en manuel.. quelle galère !Cliquez pour agrandir...