Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

récupérer le résultat d'une requête dans une variable

10 réponses
Avatar
doclaude
bonjour à tous
je débute en windev et j'arrive pas à trouver une explication simple pour
récupérer le résultat d'une requête simple de sélection (1 valeur renvoyée
par la requête) dans une variable

(pour pouvoir l'afficher ensuite dans un champ de saisie ou un libellé par
exemple)
du genre
saisie1= résultat de la requête
Si quelqu'un a une idée, elle serait la très bien venue
merci d'avance
claude

10 réponses

Avatar
Roumegou Eric
doclaude a formulé la demande :
bonjour à tous
je débute en windev et j'arrive pas à trouver une explication simple pour
récupérer le résultat d'une requête simple de sélection (1 valeur renvoyée
par la requête) dans une variable



moi je ne débute pas et quand j'ai voulu utiliser la prog officielle
(j'utilise normalement le sql natif) avec les hexecuterequete, je dois
avouer que j'ais eu les memes interrogations.
La doc là dessus est vraiment insuffisante et pas d'exemple complet
avec un ordre select et la façon de récupérer les colonnes de la
requete.
En fait, il faut utiliser HlitPremier et qualifier les colonnes par le
nom de la requete.le nom de la colonne.

Mais il faut croire que cela vient d'une révélation divine puisque
aucun ex pour ce b_a ba.
Voici un code qui pourra t'inspirer


Marequete est une Source de Données
cmd est une chaîne
cmd="SELECT MAX(SPY_DETAIL.IDSPY_DETAIL) AS DER_DETAIL,"+...
" MAX(SPY_DETAIL.IDSPY_ACTION) AS DER_ACTION,"+...
" COUNT(SPY_DETAIL.IDSPY_DETAIL) AS NBR_DETAIL,"+...
" COUNT(distinct SPY_DETAIL.IDSPY_ACTION) AS NBR_ACTION"+...
" FROM SPY_DETAIL"

SI PAS HExécuteRequêteSQL(Marequete,hRequêteDéfaut,cmd) ALORS
Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo
())
RETOUR
FIN

HLitPremier (Marequete)
chretour="<DER_DETAIL>"+Marequete.DER_DETAIL+"</DER_DETAIL>"+RC+...
"<DER_ACTION>"+Marequete.DER_ACTION+"</DER_ACTION>"+RC+...
"<NBR_DETAIL>"+Marequete.NBR_DETAIL+"</NBR_DETAIL>"+RC+...
"<NBR_ACTION>"+Marequete.NBR_ACTION+"</NBR_ACTION>"





(pour pouvoir l'afficher ensuite dans un champ de saisie ou un libellé par
exemple)
du genre
saisie1= résultat de la requête
Si quelqu'un a une idée, elle serait la très bien venue
merci d'avance
claude




--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Marcel.berman
Salut !


On 29-Aug-2005, "Roumegou Eric" wrote:

Marequete est une Source de Données
cmd est une chaîne
cmd="SELECT MAX(SPY_DETAIL.IDSPY_DETAIL) AS DER_DETAIL,"+...
" MAX(SPY_DETAIL.IDSPY_ACTION) AS DER_ACTION,"+...
" COUNT(SPY_DETAIL.IDSPY_DETAIL) AS NBR_DETAIL,"+...
" COUNT(distinct SPY_DETAIL.IDSPY_ACTION) AS NBR_ACTION"+...
" FROM SPY_DETAIL"

SI PAS HExécuteRequêteSQL(Marequete,hRequêteDéfaut,cmd) ALORS
Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo
())
RETOUR
FIN

HLitPremier (Marequete)
chretour="<DER_DETAIL>"+Marequete.DER_DETAIL+"</DER_DETAIL>"+RC+...
"<DER_ACTION>"+Marequete.DER_ACTION+"</DER_ACTION>"+RC+...
"<NBR_DETAIL>"+Marequete.NBR_DETAIL+"</NBR_DETAIL>"+RC+...
"<NBR_ACTION>"+Ma




Il y a peut-être plus simple ...

// definition de la requète et exécution ...
cretour = ""
si hnbenr(marequete) >= 1 alors
cRetour = hrecupereenregistrement(marequete)
fin

bien à vous !
--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Avatar
doclaude
Bonsoir Eric
un grand merci à toi pour ta réponse rapide et très détaillée (pour un
débutant je tire la langue ...)
on se demande pourquoi wwwwwindev, par ailleurs fort bienf ait, n'a pas
pensé à inclure çà ?
merci encore
:-))
claude



"Roumegou Eric" a écrit dans le message de news:

doclaude a formulé la demande :
> bonjour à tous
> je débute en windev et j'arrive pas à trouver une explication simple


pour
> récupérer le résultat d'une requête simple de sélection (1 valeur


renvoyée
> par la requête) dans une variable

moi je ne débute pas et quand j'ai voulu utiliser la prog officielle
(j'utilise normalement le sql natif) avec les hexecuterequete, je dois
avouer que j'ais eu les memes interrogations.
La doc là dessus est vraiment insuffisante et pas d'exemple complet
avec un ordre select et la façon de récupérer les colonnes de la
requete.
En fait, il faut utiliser HlitPremier et qualifier les colonnes par le
nom de la requete.le nom de la colonne.

Mais il faut croire que cela vient d'une révélation divine puisque
aucun ex pour ce b_a ba.
Voici un code qui pourra t'inspirer


Marequete est une Source de Données
cmd est une chaîne
cmd="SELECT MAX(SPY_DETAIL.IDSPY_DETAIL) AS DER_DETAIL,"+...
" MAX(SPY_DETAIL.IDSPY_ACTION) AS DER_ACTION,"+...
" COUNT(SPY_DETAIL.IDSPY_DETAIL) AS NBR_DETAIL,"+...
" COUNT(distinct SPY_DETAIL.IDSPY_ACTION) AS NBR_ACTION"+...
" FROM SPY_DETAIL"

SI PAS HExécuteRequêteSQL(Marequete,hRequêteDéfaut,cmd) ALORS
Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo
())
RETOUR
FIN

HLitPremier (Marequete)
chretour="<DER_DETAIL>"+Marequete.DER_DETAIL+"</DER_DETAIL>"+RC+...
"<DER_ACTION>"+Marequete.DER_ACTION+"</DER_ACTION>"+RC+...
"<NBR_DETAIL>"+Marequete.NBR_DETAIL+"</NBR_DETAIL>"+RC+...
"<NBR_ACTION>"+Marequete.NBR_ACTION+"</NBR_ACTION>"




>
> (pour pouvoir l'afficher ensuite dans un champ de saisie ou un libellé


par
> exemple)
> du genre
> saisie1= résultat de la requête
> Si quelqu'un a une idée, elle serait la très bien venue
> merci d'avance
> claude


--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)




Avatar
Juliane
Bonjour

Un exemple :

// Définir une variable
Resultat est ... (chaine, entier...)

// Dans la requete, ajouter un alias avec cette variable :
mareq="Select max(MONCHAMP) AS Resultat from MONFICHIER"

// Pour l'utiliser :
SAISIE1 = Resultat

Bon courage

"doclaude" a écrit dans le message de
news:I9HQe.28040$
bonjour à tous
je débute en windev et j'arrive pas à trouver une explication simple pour
récupérer le résultat d'une requête simple de sélection (1 valeur renvoyée
par la requête) dans une variable

(pour pouvoir l'afficher ensuite dans un champ de saisie ou un libellé par
exemple)
du genre
saisie1= résultat de la requête
Si quelqu'un a une idée, elle serait la très bien venue
merci d'avance
claude




Avatar
Roumegou Eric
Le 29/08/2005, Juliane a supposé :
Bonjour

Un exemple :

// Définir une variable
Resultat est ... (chaine, entier...)

// Dans la requete, ajouter un alias avec cette variable :
mareq="Select max(MONCHAMP) AS Resultat from MONFICHIER"

// Pour l'utiliser :
SAISIE1 = Resultat




Peux tu préciser STP car cela m'interresse.
Comment lances-tu la requete (avec un hexecuterequetesql)
il faut bien déclarer une source de données ?
on peut se dispenser de préfixer résultat ?



Bon courage

"doclaude" a écrit dans le message de
news:I9HQe.28040$
bonjour à tous
je débute en windev et j'arrive pas à trouver une explication simple pour
récupérer le résultat d'une requête simple de sélection (1 valeur renvoyée
par la requête) dans une variable

(pour pouvoir l'afficher ensuite dans un champ de saisie ou un libellé par
exemple)
du genre
saisie1= résultat de la requête
Si quelqu'un a une idée, elle serait la très bien venue
merci d'avance
claude






--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Roumegou Eric
a émis l'idée suivante :
Salut !


On 29-Aug-2005, "Roumegou Eric" wrote:

Marequete est une Source de Données
cmd est une chaîne
cmd="SELECT MAX(SPY_DETAIL.IDSPY_DETAIL) AS DER_DETAIL,"+...
" MAX(SPY_DETAIL.IDSPY_ACTION) AS DER_ACTION,"+...
" COUNT(SPY_DETAIL.IDSPY_DETAIL) AS NBR_DETAIL,"+...
" COUNT(distinct SPY_DETAIL.IDSPY_ACTION) AS NBR_ACTION"+...
" FROM SPY_DETAIL"

SI PAS HExécuteRequêteSQL(Marequete,hRequêteDéfaut,cmd) ALORS
Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo
())
RETOUR
FIN

HLitPremier (Marequete)
chretour="<DER_DETAIL>"+Marequete.DER_DETAIL+"</DER_DETAIL>"+RC+...
"<DER_ACTION>"+Marequete.DER_ACTION+"</DER_ACTION>"+RC+...
"<NBR_DETAIL>"+Marequete.NBR_DETAIL+"</NBR_DETAIL>"+RC+...
"<NBR_ACTION>"+Ma




Il y a peut-être plus simple ...

// definition de la requète et exécution ...
cretour = ""
si hnbenr(marequete) >= 1 alors
cRetour = hrecupereenregistrement(marequete)
fin

bien à vous !



Excuse moi Marcel, mais c'est justement parce que cela devait être
considéré comme trop simple que moi j'ai perdu du temps quand j'ai
voulu l'utiliser.
comment définis-tu ta requete ? il faut créer une requete ou peut on la
définir directement (et souvent dynamiquement) dans le code.
Comment l'execute tu ? hexecuterequete j'ai compris que c'était si la
requete était définie et sauveg comme une requete, hexecuterequetesql
si on définissait la requete dans le code.
Comment utilise-t-on le hrecupereenregistrement si on a plusieurs
champs ?

Je te remercie de tes précisions car meme si je n'utilise pas trop
souvent cette forme de prog avec les accès alternatifs, il m'arrivent
pour echanger entre deux bases distinctes d'utiliser les 2 méthodes de
prog, d'où les intérrogations que j'ai eues récemment. Et j'ai trouvé
la doc là dessus très incomplête.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Marcel.berman
Salut !
<Message original à la fin du message pour des raisons de lisibilité>

J'utilise tout le temps des requètes sans utiliser le générateur, c'est à
dire que j'écris moi-même mes requètes.
Exemple :

creq est une chaine
sdreq est une source de données
nEnr est un entier
cResultat est une chaine
creq = "select nom, prénom, tel from contacts where zip = '75000'"
si pas hexecuterequetesql(sdreq,creq) alors
// code d'erreur
sinon
// Je vérifie s'il ya des résultats
nenr = hnbenr(sdreq)
si nenr >= 1 alors
// selon le cas, je remplis une table mémoire avec les données
// construittablemémoire(matable,sdreq,taremplirtable)
// Ou j'examine les résultats
//si nenr = 1 alors
// hlitpremier(sdreq)
// cresultat = hrecupereenregistremen(sdreq)
// // cresultat contient <nom>+tab+<prenom>+tab+tel>
// // code d'exploitation
//sinon
// pour tout sdreq
// cresultat = hrecupereenregistremen(sdreq)
// // cresultat contient <nom>+tab+<prenom>+tab+tel>
// // code d'exploitation
// fin
//fin
sinon
info("Il n'y a pas d'enregistrements correspondant à votre demande !")
fin
fin

Je dois avouer que j'utilise intensément les tables mémoires pour afficher
les résultats de mes requètes
En espérant t'avoir aisé ...

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477




On 30-Aug-2005, "Roumegou Eric" wrote:

a émis l'idée suivante :
> Salut !
>
>
> On 29-Aug-2005, "Roumegou Eric" wrote:
>
>> Marequete est une Source de Données
>> cmd est une chaîne
>> cmd="SELECT MAX(SPY_DETAIL.IDSPY_DETAIL) AS DER_DETAIL,"+...
>> " MAX(SPY_DETAIL.IDSPY_ACTION) AS DER_ACTION,"+...
>> " COUNT(SPY_DETAIL.IDSPY_DETAIL) AS NBR_DETAIL,"+...
>> " COUNT(distinct SPY_DETAIL.IDSPY_ACTION) AS NBR_ACTION"+...
>> " FROM SPY_DETAIL"
>>
>> SI PAS HExécuteRequêteSQL(Marequete,hRequêteDéfaut,cmd) ALORS
>> Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo
>> ())
>> RETOUR
>> FIN
>>
>> HLitPremier (Marequete)
>> chretour="<DER_DETAIL>"+Marequete.DER_DETAIL+"</DER_DETAIL>"+RC+...
>> "<DER_ACTION>"+Marequete.DER_ACTION+"</DER_ACTION>"+RC+...
>> "<NBR_DETAIL>"+Marequete.NBR_DETAIL+"</NBR_DETAIL>"+RC+...
>> "<NBR_ACTION>"+Ma
>
>
> Il y a peut-être plus simple ...
>
> // definition de la requète et exécution ...
> cretour = ""
> si hnbenr(marequete) >= 1 alors
> cRetour = hrecupereenregistrement(marequete)
> fin
>
> bien à vous !

Excuse moi Marcel, mais c'est justement parce que cela devait être
considéré comme trop simple que moi j'ai perdu du temps quand j'ai
voulu l'utiliser.
comment définis-tu ta requete ? il faut créer une requete ou peut on la
définir directement (et souvent dynamiquement) dans le code.
Comment l'execute tu ? hexecuterequete j'ai compris que c'était si la
requete était définie et sauveg comme une requete, hexecuterequetesql
si on définissait la requete dans le code.
Comment utilise-t-on le hrecupereenregistrement si on a plusieurs
champs ?

Je te remercie de tes précisions car meme si je n'utilise pas trop
souvent cette forme de prog avec les accès alternatifs, il m'arrivent
pour echanger entre deux bases distinctes d'utiliser les 2 méthodes de
prog, d'où les intérrogations que j'ai eues récemment. Et j'ai trouvé
la doc là dessus très incomplête.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)


Avatar
mat
Juliane wrote:
Bonjour

Un exemple :

// Définir une variable
Resultat est ... (chaine, entier...)

// Dans la requete, ajouter un alias avec cette variable :
mareq="Select max(MONCHAMP) AS Resultat from MONFICHIER"

// Pour l'utiliser :
SAISIE1 = Resultat




Bonjour,

Cet exemple m'a surpris et en fait il ne fonctionne pas chez moi.
Resultat dans la requête est une rubrique de la requête que je ne peux
pas adresser directement, sans avoir lu l'enregistrement préalablement.

Salutations
mat
Avatar
Roumegou Eric
Merci !
ton exemple m'en apprends plus que tout ce qu'il y a dans la doc.
C'est exactement ça qu'il me fallait.


a écrit :
Salut !
<Message original à la fin du message pour des raisons de lisibilité>

J'utilise tout le temps des requètes sans utiliser le générateur, c'est à
dire que j'écris moi-même mes requètes.
Exemple :

creq est une chaine
sdreq est une source de données
nEnr est un entier
cResultat est une chaine
creq = "select nom, prénom, tel from contacts where zip = '75000'"
si pas hexecuterequetesql(sdreq,creq) alors
// code d'erreur
sinon
// Je vérifie s'il ya des résultats
nenr = hnbenr(sdreq)
si nenr >= 1 alors
// selon le cas, je remplis une table mémoire avec les données
// construittablemémoire(matable,sdreq,taremplirtable)
// Ou j'examine les résultats
//si nenr = 1 alors
// hlitpremier(sdreq)
// cresultat = hrecupereenregistremen(sdreq)
// // cresultat contient <nom>+tab+<prenom>+tab+tel>
// // code d'exploitation
//sinon
// pour tout sdreq
// cresultat = hrecupereenregistremen(sdreq)
// // cresultat contient <nom>+tab+<prenom>+tab+tel>
// // code d'exploitation
// fin
//fin
sinon
info("Il n'y a pas d'enregistrements correspondant à votre demande !")
fin
fin

Je dois avouer que j'utilise intensément les tables mémoires pour afficher
les résultats de mes requètes
En espérant t'avoir aisé ...

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477




On 30-Aug-2005, "Roumegou Eric" wrote:

a émis l'idée suivante :
Salut !


On 29-Aug-2005, "Roumegou Eric" wrote:

Marequete est une Source de Données
cmd est une chaîne
cmd="SELECT MAX(SPY_DETAIL.IDSPY_DETAIL) AS DER_DETAIL,"+...
" MAX(SPY_DETAIL.IDSPY_ACTION) AS DER_ACTION,"+...
" COUNT(SPY_DETAIL.IDSPY_DETAIL) AS NBR_DETAIL,"+...
" COUNT(distinct SPY_DETAIL.IDSPY_ACTION) AS NBR_ACTION"+...
" FROM SPY_DETAIL"

SI PAS HExécuteRequêteSQL(Marequete,hRequêteDéfaut,cmd) ALORS
Erreur ( "Erreur d' initialisation de la requête" + RC + HErreurInfo
())
RETOUR
FIN

HLitPremier (Marequete)
chretour="<DER_DETAIL>"+Marequete.DER_DETAIL+"</DER_DETAIL>"+RC+...
"<DER_ACTION>"+Marequete.DER_ACTION+"</DER_ACTION>"+RC+...
"<NBR_DETAIL>"+Marequete.NBR_DETAIL+"</NBR_DETAIL>"+RC+...
"<NBR_ACTION>"+Ma




Il y a peut-être plus simple ...

// definition de la requète et exécution ...
cretour = ""
si hnbenr(marequete) >= 1 alors
cRetour = hrecupereenregistrement(marequete)
fin

bien à vous !



Excuse moi Marcel, mais c'est justement parce que cela devait être
considéré comme trop simple que moi j'ai perdu du temps quand j'ai
voulu l'utiliser.
comment définis-tu ta requete ? il faut créer une requete ou peut on la
définir directement (et souvent dynamiquement) dans le code.
Comment l'execute tu ? hexecuterequete j'ai compris que c'était si la
requete était définie et sauveg comme une requete, hexecuterequetesql
si on définissait la requete dans le code.
Comment utilise-t-on le hrecupereenregistrement si on a plusieurs
champs ?

Je te remercie de tes précisions car meme si je n'utilise pas trop
souvent cette forme de prog avec les accès alternatifs, il m'arrivent
pour echanger entre deux bases distinctes d'utiliser les 2 méthodes de
prog, d'où les intérrogations que j'ai eues récemment. Et j'ai trouvé
la doc là dessus très incomplête.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)






--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
degbegnon
Le lundi 29 Août 2005 à 19:33 par Roumegou Eric :
doclaude a formulé la demande :
bonjour à tous
je débute en windev et j'arrive pas à trouver une explication
simple pour
récupérer le résultat d'une requête simple de
sélection (1 valeur renvoyée
par la requête) dans une variable




moi je ne débute pas et quand j'ai voulu utiliser la prog officielle
(j'utilise normalement le sql natif) avec les hexecuterequete, je dois
avouer que j'ais eu les memes interrogations.
La doc là dessus est vraiment insuffisante et pas d'exemple complet
avec un ordre select et la façon de récupérer les colonnes
de la
requete.
En fait, il faut utiliser HlitPremier et qualifier les colonnes par le
nom de la requete.le nom de la colonne.

Mais il faut croire que cela vient d'une révélation divine
puisque
aucun ex pour ce b_a ba.
Voici un code qui pourra t'inspirer


Marequete est une Source de Données
cmd est une chaîne
cmd="SELECT MAX(SPY_DETAIL.IDSPY_DETAIL) AS DER_DETAIL,"+...
" MAX(SPY_DETAIL.IDSPY_ACTION) AS DER_ACTION,"+...
" COUNT(SPY_DETAIL.IDSPY_DETAIL) AS NBR_DETAIL,"+...
" COUNT(distinct SPY_DETAIL.IDSPY_ACTION) AS NBR_ACTION"+...
" FROM SPY_DETAIL"

SI PAS
HExécuteRequêteSQL(Marequete,hRequêteDéfaut,cmd)
ALORS
Erreur ( "Erreur d' initialisation de la requête" + RC +
HErreurInfo
())
RETOUR
FIN

HLitPremier (Marequete)
chretour="
"
"
"





(pour pouvoir l'afficher ensuite dans un champ de saisie ou un libellé
par
exemple)
du genre
saisie1= résultat de la requête
Si quelqu'un a une idée, elle serait la très bien venue
merci d'avance
claude





--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)


Bonjour mon Boss
Je te remercie pour les instructions j'ai pris bonne note et ça marche
Arnauld KANHONOU
Bénin +22966522645