PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Lenteur Fichier vers Ecran
Lenteur Fichier vers Ecran
Débuté par contact, 18 nov. 2005 19:46 - 2 réponses
Posté le 18 novembre 2005 - 19:46
Bonjour

j'utilise la commande FichierVersEcran pour affecter a des champs les données lues par hlitpremier et hexecuterequete.

Je lis un seul enregistrement à l'aide d'une requete intégrée. L'execution de la requete et du hlitpremier est rapide (<1 s. en client serveur SQL Serveur via OLEDB - liaison Adsl 8Mo)

Par contre, le fichierversEcran prend 5 secondes... Ce qui me ralentit l'éxécution. Je n'utilise pas le RAD.

Avez vous une solution pour optimiser cette instruction ? ou comment peut on faire autrement ???

Merci de vos réponses et conseils

Hervé
Posté le 21 novembre 2005 - 10:09
Bon ben je me réponds à moi meme car j'ai trouvé la soluce.

Il suffit de ne pas faire un fichierversecran mais d'enumerer les champs du formulaire et de leur affecter les rubriques de la table lues.

Attention, les champs doivent avoir les memes noms que les rubriques. De plus, pour gérer les modifs il faut passer par du SQL (UPDATE par exemple lors du clic sur un bouton enregistrer.

Voici le code (ou RQ_FICHEINTERVENTION est execute par hexecuterequetesql)

ResChamp est une chaîne
I est un entier=1

ResChamp=EnumèreChamp(FicheOnglet[1],I)

TANTQUE ResChamp<>""

// Permet de ne prendre que les champs
SI ChaîneOccurrence(ResChamp,"Séparateur")=0 ET ChaîneOccurrence(ResChamp,"BTN")=0 ALORS

{ResChamp}..Valeur={"RQ_FICHEINTERVENTION." + ResChamp}

FIN

I++

ResChamp=EnumèreChamp(FicheOnglet[1],I)

FIN
Posté le 21 novembre 2005 - 11:35
La meme chose sous la forme d'une procédure

ou Loc_données est le nom de la source de données (chaine), et monobjet un objet de type formulaire ou onglet compatible avec ResChamp.

Utilisation; rempliecran("Rq_FicheIntervention",FicheOnglet[1]) par exemple

*******

PROCEDURE RempliEcran(Loc_Donnees est une chaîne, MonObjet)

ResChamp est une chaîne
I est un entier=1

ResChamp=EnumèreChamp(MonObjet,I)

TANTQUE ResChamp<>""

SI ChaîneOccurrence(ResChamp,"Séparateur")=0 ET ChaîneOccurrence(ResChamp,"BTN")=0 ALORS

// Gestion des heures
// trace({reschamp}..type, reschamp)


SI {ResChamp}..Type 003 ALORS

Trace(Droite({Loc_Donnees +"." + ResChamp},9))

{ResChamp}..Valeur=Droite({Loc_Donnees + "." + ResChamp},9)


SINON
{ResChamp}..Valeur={Loc_Donnees + "." + ResChamp}

FIN

FIN

I++

ResChamp=EnumèreChamp(MonObjet,I)

FIN