Erreur ConstruitTablefichier
Stagiaire WDF
Inscrit:
08/11/2006 15:47
De Suisse
Post(s): 32
J'ai crée une procedure locale en thread automatique et j'ai un problème assez bizarre....

Voici mon code :

SI PAS HExécuteRequêteSQL(gsdsqlvue,hRequêteDéfaut,"SELECT * FROM BIG_FILE") ALORS
Erreur(ErreurInfo(errComplet))
RETOUR
FIN

Info(HNbEnr(gsdSqlVue))

ConstruitTableFichier(TABLE_REQ,gsdsqlvue,taSansMémoImage+taAvecIdAuto+taSans
Ajuste+taSansMémoTexte+taRemplirTable)

Aucune errreur sur Hexecuterequete....
Info me donne 75148 (extact)

Apres j'ai une erreur

L'objet gsdSqlVue n'a pas été trouvé.

Traitement de <ZDA_fenGraphe.PROCEDURE.PRECALCUL>, ligne <26>, thread <0>
Fonction <ConstruitTableFichier>, n° de syntaxe <1>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 1025


Si quelqu'un peut me dire comment résoudre sela car moi, je suis dans le noir....

JFG

Contribution le : 08/11/2006 15:52
Créer un fichier PDF de la contribution Imprimer


Re: Erreur ConstruitTablefichier
Stagiaire WDF
Inscrit:
08/11/2006 15:47
De Suisse
Post(s): 32
Bon, je m'auto-réponds moi-même personnelement...

A priori, si on à un tread avec des fonctions SQL dedans, cela ne fonctionne pas (il remonte pas l'info), quelque soit le type de tread crée (avec l'outil de création des tread automatiques dans le générateur de code )

Le même code, mais sans le tread, joue sans problèmes...

J'vais chercher une autre solution....

Contribution le : 14/11/2006 16:48
Créer un fichier PDF de la contribution Imprimer


Re: Erreur ConstruitTablefichier
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

La fonction ConstruitTableFichier() fonctionne très bien dans un thread en respectant une contrainte:

La requete doit être créée a partir de l'éditeur de requête de WinDev.

voici un exemple:
//Code d'un bouton
//Execution d'un thread avec comme paramètre:
//Nom du thread
//Constante
//Nom de la procédure a exécuter
//Paramètre 1, 2, n
//ici param1 : le nom de la table
// param2 : le nom de la requete
sReq est une chaîne = "ReqCliNom"
ThreadExécute("THR1",threadUtiliseHyperFile,proRempliTable,"TABLE",sReq)


//Code la procedure proRempliTable
PROCEDURE proRempliTable(pTableNom est une chaine, pRequeteNom est une chaine)
SI PAS HExécuteRequête(pRequeteNom,hRequêteDéfaut) ALORS
  Erreur(HErreurInfo())
  RETOUR
FIN

ConstruitTableFichier(pTableNom,pRequeteNom,taRemplirTable+taAvecBinaire+taLibelléRubrique)


Ce code fonctionne correctement

Contribution le : 16/11/2006 00:06
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Erreur ConstruitTablefichier
Stagiaire WDF
Inscrit:
08/11/2006 15:47
De Suisse
Post(s): 32
Merci pour l'explication de cette erreur de thread, il faut avoir crée la requête dans le générateur de requêtes de Windev...

Cela n'arange pas mes bidons car j'ai crée des composants où les requêtes sont crées dynamiquement ou bien stockées dans des tables. Cela m'est sûrtout utile quand je doit créer des outils de recherche complexes (style recherche de tous les fournisseurs qui ont signé les conditions d'achats). Souvent, les demandes des utlisateurs viennent APRES la création de l'appli et je ne désire plus recompler tous le 2 jours pour chaque modif...

En résumé, je vais continuer à chercher la solution allieurs (snif)

Bonne journée, soirée, nuit...


JF Georgy

Contribution le : 16/11/2006 20:10
Créer un fichier PDF de la contribution Imprimer


Re: Erreur ConstruitTablefichier
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
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

Contribution le : 17/11/2006 10:41
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2