PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Recherche lent (Requete avec condition contient)
Recherche lent (Requete avec condition contient)
Débuté par FAI, 12 fév. 2005 12:00 - Aucune réponse
Posté le 12 février 2005 - 12:00
Bonjour

Configuration:
P4 win 2000 Windev 80315j ,sous réseau

Problème : Lors je cherche dans champs1 = OK , mais dans le champs2 la recherche est plus lente(affiche caractère par caratère)

Ma fenetre contient une table fichier et deux champs de recherche
La table est alimentée par un fichier de 4000 enregistrements
Champs1 contient le code suivant :

fnIndice=TableCherche("Article",sChercher,Faux)
TableTrie(TableProduit,"Article")
FIN
SI fnIndice<>- 1 ALORS
TableSelectPlus(TableProduit,fnIndice)
FIN
A ce passage la recherche s'est bien effectué est rapide


Champs2 contient le code suivant (Achaque modification de champs2)
//On affiche à partir de fichier de base de données et non de la requete
SI champs2="" ALORS
// Changer le fichier de parcours Avant été une requête
gbRequêteExiste=Faux //Pas de requête
TableProduit..FichierParcouru="FichierARTICLES"
SINON
ExécuterRequête("RqArticleContient",Champs2,"TableProduit")

FIN

PROCEDURE ExécuterRequête(sNomRequête, vArticle, sTable)

// Initialiser la requête
SI PAS HExécuteRequête(sNomRequête, hRequêteInterruptible, vArticle) ALORS
// La requête ne peut pas s'exécuter
Erreur("Erreur d'initialisation de la requête" + RC + HErreurInfo())
RENVOYER Faux
SINON
// Indiquer que la requête a été créée
gbRequêteExiste = Vrai
// Lire le premier enregistrement
HLitPremier(sNomRequête)
SI HEnDehors() ALORS
// L'enregistrement n'existe pas : le créer oui/non
SI OuiNon("Aucun enregistrement ne correspond à votre recherche"+RC+"Voulez-vous le créer ?") ALORS
SI gsCoordonnées <> "" ALORS
sInitialiserRubriques(gsCoordonnées)
SINON
// Affecter les valeurs aux rubriques de la requête
HVersRubrique(sNomRequête, 1, vArticle)
FIN

// Ouvrir la fenêtre en mode Création
Ouvre(Fiche_FARTICLES, "Création")
FIN
SINON
// Afficher les enregistrements dans la table selon la requête RechercheClient
// Changer le fichier de parcours

{sTable}..FichierParcouru = sNomRequête
// Ajouter les enregistrements dans la table
TableAffiche(sTable, taDébut)
FIN
FIN


PROCEDURE sInitialiserRubriques(sCondition)

sDonnée est une chaîne = ""
nIndiceRC est un entier = 1

sDonnée = ExtraitChaîne(sCondition, 1, RC)

BOUCLE
// Condition de sortie
SI sDonnée = EOT ALORS SORTIR

SI sDonnée <> "" ALORS
// Affecter les valeurs aux rubriques de la requête
HVersRubrique(RqArticleContient,nIndiceRC,sDonnée)
FIN

// Incrémenter l'indice
nIndiceRC++

// Extraire les coordonnées suivantes
sDonnée = ExtraitChaîne(sCondition, nIndiceRC, RC)
FIN

A ce passage il me permet de chercher caratère par carctère parfois le curseur se plante

Aidez mois SVP
Merci d'avance