PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Procédure stockée
Procédure stockée
Débuté par juju, 14 nov. 2006 15:00 - 7 réponses
Posté le 14 novembre 2006 - 15:00
Une question a tout hasard si jamais quelqu'un sait...
Je vous explique mon problème
J'appelle depuis windev une procédure stockée qui remplit une table temporaire.
J'en appelle ensuite une autre pour lire cette table.
Le problème c'est que windev n'attend pas que la première procédure est terminée (elle dure plusieurs minutes) et commence la deuxième d'ou mon problème!!!
HExécuteRequêteSQL et SQLExec donnet le meme resultat!
Si quelqu'un à une idée!
Merci
Posté le 14 novembre 2006 - 19:19
<<Le problème c'est que windev n'attend pas que la première procédure est terminée (elle dure plusieurs minutes) >> : c'est déjà une anomalie en soi. Quel est le code de la procédure? ?
Posté le 15 novembre 2006 - 00:35
Bonjour,

Si j'ai bien compris !!?

1/ En principe si vous executez le code dans le thread principale le code est executé ligne par ligne exmple :

Procedure1()
Procedure2()

Le code execute la 1ere procedure puis passe à la deuxieme sauf si vous travaillez en multi thread ( donc retrouvez l'aide sur les thread pour voir comment organiser celà ) sinon
passer par le debogueur de windev pour voir effectivement ce qui se passe en fond de code exactement et pas à pas.

2/ Puisque vous avez parlé des procedures stockés qui n'existerait pour C/S windev (manta) que dans la version 11, alors peut être vous attaquez une BDD sur SQL Server ou Oracle ... Dans ce cas je pense que vous pouvez ajouter un indicateur de fin de traitement exemple 'Renvoyer vrai' à la fin de votre procedure stocké pour indiquer la fin du traitement, puis faire :

au lieu de :
MaProcedureStocké()
MaDexiemeProcedure()

si MaProcedureStocké() alors
MaDexiemeProcedure()
fin


Bon Dev.

--

Ali Hindi : Alidev7@yahoo.fr
Posté le 15 novembre 2006 - 09:22
OUi j'attaque une base de données SQl SERVER via l'accès natif!
Et HexecuteSql() renvoie vrai à partir du moment ou il a trouve la procedure et à commencer à la traiter, meme si elle n'est pas terminée.Je vais appronfondir la piste de la valeur de retour!
J'y avais pensé mais j'avais eu un pb je sais plus lequel, mais je vais m'y recoller!
Merci!
Posté le 15 novembre 2006 - 12:38
si MaProcedureStocké() alors
MaDexiemeProcedure()
fin
Ca ne peux pas marcher car tant que la procedure n'est pas terminer elle ne renvoie rien!
Donc je ne vais pas rentrer dans le si et donc pas executer ma deuxième procédure!
Posté le 15 novembre 2006 - 16:02
Bonjour,

Vous demandez 2 choses différente :

1/Le problème c'est que windev n'attend pas que la première procédure est terminée
elle dure plusieurs minutes) et commence la deuxième d'ou mon problème!!!


2/Ca ne peux pas marcher car tant que la procedure n'est pas terminer elle ne renvoie rien!
Donc je ne vais pas rentrer dans le si et donc pas executer ma deuxième procédure!



n'attend pas que la première procédure est terminée ( je veux attendre )

< différent de >!!!!!!

je ne vais pas rentrer dans le si et donc pas executer ma deuxième procédure! ( je ne veux pas attendre )


Donc : attendre ou ne pas attendre ???


--
Ali Hindi : Alidev7@yahoo.fr
Posté le 15 novembre 2006 - 16:02
Re-bonjour,

( les procédures stockés c'est bon et c'est puissant )
Mais est-ce pas possible pour ce cas précis de dupliquer en WLangage votre procedure stocké en procedure globale et exécuter la même solution.

A+

--
Ali Hindi : Alidev7@yahoo.fr
Posté le 15 novembre 2006 - 18:24
Je pense que c'est un bug windev car normalement la suite du code n'est traité qu'une fois que la premire procédure stockée est finie!
or la windev attend 5s environ et considere qu'elle est finie et passe à la suite!
???????????????????????