PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Récursivite - variable de type requete SQL
Récursivite - variable de type requete SQL
Débuté par Dirk, 08 juil. 2022 14:12 - 6 réponses
Posté le 08 juillet 2022 - 14:12
Bonjour,

Quelqu'un a t-il déja essayé la récursivite avec les variables de type REQUETE SQL ?

Il semble y avoir un souci : faut-il repasser en source de données avec donneidentifiant afin d'obtenir un nom unique en mémoire ?

Merci d'avance
Membre enregistré
393 messages
Popularité : +13 (13 votes)
Posté le 08 juillet 2022 - 18:13
Bonjour,

Allez voir dans la description de votre projet, dans l'onglet Compilation. Il y a de grandes chances que l'option "Nommage des sources de données" soit sur "Nom de la variable".

Vous pouvez la passer sur "Nom automatique", ou "Nom automatique avec références" (s'en référer à la doc pour la différence entre les deux), cela devrait rentre votre variable Requête SQL "locale" à l'occurrence en cours d'exécution dans votre récursivité.

Attention cependant, suivant le projet, ce changement n'est pas à prendre à la légère : le fait que les sources de données soient "globales" (sauf à se faire attribuer une valeur spécifique comme avec DonneIdentifiant) peut avoir été utilisé "bénéfiquement" pour passer des valeurs d'une partie à une autre du projet.
Membre enregistré
17 messages
Posté le 08 juillet 2022 - 18:59
Bonjour,

Merci pour la réponse, mais il se trouve déjà en nom automatique avec référence et les variables de type requete SQL ne fonctionnent pas comme elles devraient dans les procédures récursives

--
Dirk
Membre enregistré
3 875 messages
Popularité : +227 (347 votes)
Posté le 12 juillet 2022 - 20:03
Bonjour,
Les requêtes récursives ne sont apparues qu'avec SQL 1999 (SQL3, ISO/CEI 9075-(1 à 10):1999).
Windev travaille avec SQL 92 (SQL 2, ISO/CEI 9075:1992).
Il faut ruser en créant une fonction récursive qui appelle ta requête

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
17 messages
Posté le 15 juillet 2022 - 12:45
Bonjour,

Que ce soit avec des variables de type requete SQL ou source de données, la récursivité en Windev est trrès limitée ... et ne fonctionne qu'au premier niveau

--
Dirk
Membre enregistré
17 messages
Posté le 15 juillet 2022 - 13:15
Bonjour,

Autre chose, en Windev 22 , ce code fonctionne

--

sdReq est une Source de Données = "sdReqClient"+DonneGUID(guidBrut)

---

En Windev 25 il renvoye une erreur du type une chaine Ansi ne peut être convertie en source de données .... La récursivité ne serait-elle plus premise en Windev ?

--
Dirk
Membre enregistré
3 875 messages
Popularité : +227 (347 votes)
Posté le 17 juillet 2022 - 20:35
Cela n'a rien à voir avec la récursivité, le problème serait le même si tu écrivais ;
sdReq="Toto"+DonneGUID(guidBrut)

Tu veux en fait nommer la requête comme bon te semble au lieu de
_SOURCE_sdReq_XXX

Une solution pour cela est d'utiliser une chaîne de caractère dans ton HExécuteRequêteSQL cf doc
e.g.
.....
sNomRequête est chaîne

sNomRequête="ReqClient"+DonneGUID(guidBrut)
HExécuteRequêteSQL(sNomRequête,.........


--
Il y a peut être plus simple, mais, ça tourne