Re: Erreur ConstruitTablefichier

Posté par drcharly93 le 17/11/2006 10:41:55
Bonjour,

Dans ce cas je vais te proposer une astuce.
la technique consiste dans un premier temp et en dehors du trhead à créer le tableau qui va recevoir les données via la fonction ConstruitTableFichier() mais sans la remplir.
On a constaté que l'execution de la fonction HExceuteRequeteSql etait très rapide cette action peut être réalisé en dehors du thread secondaire

Reste plus qua intégrer le remplissage de table dans un thread secondaire.

//Code du bouton
gsdsqlvue est une Source de Données
Sql est une chaîne

Sql = "gsdsqlvue,hRequêteDéfaut,"SELECT * FROM BIG_FILE"
//Execution de la requête pour construire la table 
SI PAS HExécuteRequêteSQL(gsdsqlvue,Cnx,hRequêteDéfaut,Sql) ALORS
  Erreur(HErreurInfo())
  RETOUR
FIN
ConstruitTableFichier(Table1,gsdsqlvue)
//Remplissage via un thread
ThreadExécute("THREADNAME",threadUtiliseHyperFile,"pExecReq",Table1..Nom,Sql)

PROCEDURE pExecReq(pTable est une chaîne, pSql est une chaîne)
Rsl est une Source de Données
i est un entier
sBuff est une chaîne

SI PAS HExécuteRequêteSQL(Rsl,hRequêteDéfaut,pSql) ALORS
  Erreur(HErreurInfo())
  RETOUR
FIN

//On rempli la table
POUR TOUS Rsl
  //On récupère les donnees d'un enregistrement
  sBuff = HRécupèreEnregistrement(Rsl,TAB)
  TableAjoute(pTable,sBuff)
FIN

Avec cette methode vous pouvez meme ajouter une jauge pour le remplissage de la table et ce a partir du thread

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=4743&post_id=19798