PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Requête SQL sur une autre Requête SQL (type WLangage)
Requête SQL sur une autre Requête SQL (type WLangage)
Débuté par AlexisPERR, 22 mai 2025 10:58 - 16 réponses
Membre enregistré
128 messages
Posté le 22 mai 2025 - 10:58
Bonjour,
Il parait que depuis la v25 update 1, on peut faire une requête sur une requête

La page d'aide est très claire à ce sujet :
https://help.windev.com/en-US/…

New in version 2025
When the SQL query is declared, it can be used in another variable of type SQL Query


Pourtant, ça ne marche pas du tout. J'ai bien tapé comme il faut me semble-t-il :

maReq1 is SQL Query =
[
SELECT PRENOM FROM CLIENT
]

maReq2 is SQL Query =
[
SELECT PRENOM FROM maReq1
]


J'ai l'erreur suivante :

Erreur dans le code SQL de la requête <_QUERY_maReqCC_22>. Initialisation de la requête impossible.
Fichier _QUERY_maReq2_21 inconnu
Membre enregistré
4 257 messages
Posté le 22 mai 2025 - 11:39
Bonjour,
Il faut exécuter maReq2 avant d'exécuter maReq1

--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Membre enregistré
128 messages
Posté le 22 mai 2025 - 11:51
Voroltinquo a écrit :
> Il faut exécuter maReq2 avant d'exécuter maReq1

Faux. Tu as lu la doc ? Ils disent justement de ne pas exécuter m1 avant m2, comme si l'appel de m2 allait dans la foulée appeler m1.

Mais cela ne marche pas. Evidemment J'ai aussi essayé d'appeler m1 avant, cela ne marche pas non plus.
Membre enregistré
950 messages
Posté le 22 mai 2025 - 13:14
Bonjour,
La LST dit ceci :

maReq1 est une Requête SQL =
[
SELECT PRENOM FROM CLIENT
]
HExécuteRequête(maReq1)

maReq2 est une Requête SQL =
[
SELECT PRENOM FROM maReq1
]
HExécuteRequête(maReq2)


Cdlt
Membre enregistré
128 messages
Posté le 22 mai 2025 - 14:08
Cédric_34 a écrit :
> La LST dit ceci :

Tu as testé ce code ? Cela ne marche pas, comme je viens de le dire au message #3.
Membre enregistré
950 messages
Posté le 22 mai 2025 - 14:15
J'ai bien vu le #3 et non je n'ai pas testé car je n'ai pas la 2025.
Je ne fais qu'apporter l'information lue dans la LST.
Il faut peut-être se tourner vers PC Soft pour savoir si c'est fonctionnel dans la version actuelle.
Cdlt

Edit : LST 139 (au début, vers page 10)
Message modifié, 22 mai 2025 - 14:19
Membre enregistré
128 messages
Posté le 22 mai 2025 - 15:16
Correctif :
ça marche maintenant. Je n'y comprends rien, toutes ces requêtes qui échouaient ce matin passent maintenant.
Je me demande, peut-être si la première requête est trop lente, cela peut faire échouer la seconde ?

Très étrange.
Membre enregistré
4 257 messages
Posté le 22 mai 2025 - 15:26
Faux. Tu as lu la doc ? Ils disent justement de ne pas exécuter m1 avant m2, comme si l'appel de m2 allait dans la foulée appeler m1.

Oui j'ai lu la doc. j'ai simplement inversé les indice.
Cela fonctionne comme dans l'exécution des requêtes obtenues via le requêteur cf la LST

--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Message modifié, 22 mai 2025 - 15:27
Membre enregistré
2 256 messages
Posté le 22 mai 2025 - 15:38
Bonjour,

Je suis en WD 28 Express et j'ai l'erreur :
Erreur :Fichier maReq1 inconnu

Limitation de la version Express ?

--
Bon dev,
Jean-Pierre
Membre enregistré
128 messages
Posté le 22 mai 2025 - 15:42
Voroltinquo a écrit :
> Cela fonctionne comme dans l'exécution des requêtes obtenues via le requêteur cf la LST

oui merci cela fonctionne, effectivement il faut appeler m1 avant d'appeler m2 comme tu l'avais dis, donc c'est la doc qui est fausse.
Membre enregistré
950 messages
Posté le 22 mai 2025 - 18:11
Jean-Pierre BLOCH,
AlexisPERR a écrit V25, c'est une erreur, il faut la 2025 update 1.
Cdlt
Membre enregistré
2 256 messages
Posté le 22 mai 2025 - 21:23
Merci Cédric !

Je me disais bien :D

--
Bon dev,
Jean-Pierre
Membre enregistré
128 messages
Posté le 25 mai 2025 - 22:15
Cédric_34 a écrit :
> AlexisPERR a écrit V25, c'est une erreur, il faut la 2025 update 1.

oui je me suis emmêlé les pinceaux, cette fonctionnalité très utile est dispo à partir de la 2025 update 1, c'est à dire la v30 update 1.
Ca marche très bien maintenant alors que j'ai eu plusieurs échecs au début, probablement parce que j'avais laissé un hQueryWithoutCorrection quelque part. Toutes mes excuses !
Membre enregistré
500 messages
Posté le 30 mai 2025 - 17:32
AlexisPERR a écrit :
Cédric_34 a écrit :
AlexisPERR a écrit V25, c'est une erreur, il faut la 2025 update 1.

oui je me suis emmêlé les pinceaux, cette fonctionnalité très utile est dispo à partir de la 2025 update 1, c'est à dire la v30 update 1.
Ca marche très bien maintenant alors que j'ai eu plusieurs échecs au début, probablement parce que j'avais laissé un hQueryWithoutCorrection quelque part. Toutes mes excuses !


Bonsoir,
quelle est la configuration du nommage ?
J'ai une erreur




J'ai cette erreur.
QUest ce qui ne marque pas ?
Membre enregistré
500 messages
Posté le 30 mai 2025 - 17:37
Voici le bon Code :
REQ_CLient est une Requête SQL =
[
SELECT * FROM Client WHERE Client.UUIDClient='08a1afb5-80a4-46ec-8216-24b5fb10420d'

]
REQ_CLient.ExécuteRequête()
Info(REQ_CLient.NbEnr())

REQ_CLient.LitPremier()
REQ_COMM est une Requête SQL =
[
SELECT * FROM Commande,REQ_CLient WHERE Commande.UUIDClient=REQ_CLient.UUIDClient
]




SI PAS REQ_COMM.ExécuteRequête() ALORS
Erreur("Erreur d'initialisation de la requête" + RC + HErreurInfo())
RETOUR
FIN
Info(REQ_COMM.NbEnr())
j'ai l'erreur :
---------------------------
WD Gestion Commerciale
---------------------------
Erreur d'initialisation de la requête
Erreur dans le code SQL de la requête <_QUERY_REQ_COMM_2>. Initialisation de la requête impossible.
Le fichier REQ_CLient n'existe pas dans la clause FROM
Erreur détectée :
WHERE Commande.UUIDClient=>>>>REQ_CLient<<<<.UUIDClient
Message modifié, 30 mai 2025 - 17:47
Membre enregistré
500 messages
Posté le 30 mai 2025 - 17:48
J'ai pris juste l'exemple WD Gestion Commercial de WIndev
et j'a choisis un client générer
Membre enregistré
500 messages
Posté le 30 mai 2025 - 18:06
j'ai compris, on ne peut le lier