PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Intégrer un mémoTexte dans une requete
Intégrer un mémoTexte dans une requete
Started by Jean TURCOTTE, Oct., 09 2019 12:27 AM - 13 replies
Registered member
1,110 messages
Popularité : +8 (8 votes)
Posted on October, 09 2019 - 12:27 AM
Bonjour, je sollicite votre aide pour m'aider à bien comprendre la facon d'utiliser une rubrique 'Mémo Texte'

Dans ma base de donnée, j'ai configuré une rubrique en 'Mémo Texte' car la longueur peut différer et être assez longue. J'ai créé une requete pour me permettre de récupérer les valeurs de cette rubrique et voici mon code, sRésultat est une chaine et gtabEmployé est un tableau de chaine;
SI HExécuteRequête(REQ_RechercheDonnéesPlanif,hRequêteDéfaut,SAI_DateDébut,1)=Vrai ALORS
sRésultat = REQ_RechercheDonnéesPlanif.Ligne
gtabEmployé = ChaîneDécoupe(sRésultat,",")
FIN

Voici mon probleme, lorsque ma rubrique est configurée en 'Chaine', sRésultat récupère les valeurs désirées mais lorsque je configure la rubrique en 'Mémo Texte', sRésultat = "".

Ais-je le droit de transférer une donnée 'Mémo Texte' dans une variable de type 'Chaine' ? et si oui, comment faire pour y parvenir.

Merci de votre aide! :)

--
Jean Turcotte
WX 24
Android 8.0 sur Galaxy S8
Laptop Lenovo I7 12GB Ram
Registered member
81 messages
Popularité : +2 (4 votes)
Posted on October, 09 2019 - 11:10 AM
c'est pas un truc du genre HExtraitMémo si memo rempli par hattachememo ou binairecharge ?

ou alors ça renvoit un buffer ?

sRésultat est un buffer = REQ_RechercheDonnéesPlanif.Ligne ???


c'est bizarre je ne me souviens pas avoir eu à faire quoi que ce soit de particulier moi ..

comment est rempli le memo ? par assignation directe de la chaine à la rubrique et ajoute ?

genre

monfic.marubmemo = malonguechaine
hajoute(monfic)

dans ce cas normalement une lecture directe renvoie le memo dans une chaine sans rien avoir à faire, sauf si précisé qq part HGèreMémo avec, hMémoNon


pour info :
avec les odres sqlxxx c'est SQLLitMémoTexte
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on October, 09 2019 - 12:29 PM
Hello

Si tu fais juste un trace(REQ_RechercheDonnéesPlanif.Ligne)
Est ce que le contenu apparait ?

Car en théorie, pas de restriction, ça doit marcher.
Posted on October, 09 2019 - 12:44 PM
Aurais-tu un HGereMemo(Faux) dans ton code?
Sinon je ne vois pas...
Registered member
1,110 messages
Popularité : +8 (8 votes)
Posted on October, 10 2019 - 1:48 PM
Bonjour à tous,

J'ai refais mes tests et j'ai toujours la même erreur mais j'ai constaté une chose bizarre, lorsque je vérifie le code PAS A PAS, la variable REQ_RechercheDonnéesPlanif.Ligne = "" et donc sRésultat = "" . mais si je regarde le contenu de la requête juste après le HEXECUTE, dont voici le résultat;





Et bien, REQ_RechercheDonnéesPlanif.Ligne indique le bon contenu, donc je soupçonne soit ma requête elle-même, soit ma ligne de requête.

Toute idée sera la bienvenue! :)

--
Jean Turcotte
WX 24
Android 8.0 sur Galaxy S8
Laptop Lenovo I7 12GB Ram
Registered member
2,566 messages
Popularité : +222 (260 votes)
Posted on October, 10 2019 - 5:28 PM
Bonjour,

Il manque la lecture de l'enregistrement:
SI HExécuteRequête(REQ_RechercheDonnéesPlanif,hRequêteDéfaut,SAI_DateDébut,1)=Vrai ALORS
SI HLitPremier(REQ_RechercheDonnéesPlanif) ALORS
sRésultat = REQ_RechercheDonnéesPlanif.Ligne
gtabEmployé = ChaîneDécoupe(sRésultat,",")
FIN
FIN


--
Cordialement,

Philippe SAINT-BERTIN
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on October, 10 2019 - 5:50 PM
Bien vu !
Tellement focus sur le problème du format Memo ...
Registered member
1,110 messages
Popularité : +8 (8 votes)
Posted on October, 10 2019 - 8:02 PM
Et ça fonctionne à perfection,

Merci ! :)

--
Jean Turcotte
WX 24
Android 8.0 sur Galaxy S8
Laptop Lenovo I7 12GB Ram
Registered member
1,110 messages
Popularité : +8 (8 votes)
Posted on October, 10 2019 - 8:28 PM
Question pour vous,

Tout mon code est écris de cette façon et en aucun temps, je n'ai confirmé mes résultats de requêtes à l'aide de HLITPREMIER, Jusqu'à maintenant, je n'ai eu aucun problème mais devrais-je ajouter la vérification?

--
Jean Turcotte
WX 24
Android 8.0 sur Galaxy S8
Laptop Lenovo I7 12GB Ram
Registered member
3,844 messages
Popularité : +227 (347 votes)
Posted on October, 11 2019 - 5:55 AM
Cela n'est nécessaire que lorsque la requête est utilisée pour renvoyer un résultat spécifique, comme dans ton cas.
Si elle doit être parcourue, pour remplir un champ table par exemple, le HLitPremier est "automatique". De même si tu doit effectuer une recherche sur le résultat, il y a un enregistrement qui est lu donc le HLitPremier est inutile.

Dans ton cas la requête était exécutée, mais ne pointait sur rien.

--
Il y a peut être plus simple, mais, ça tourne
Message modified, October, 11 2019 - 5:59 AM
Registered member
2,566 messages
Popularité : +222 (260 votes)
Posted on October, 11 2019 - 7:39 AM
Bonjour,

Il faut considérer la requête comme un container fermé. Pour savoir ce qu'il y a dedans, il faut lire le manifeste. Ensuite comme le dit Voroltinquo, pour les objets de type Table, ZR, Liste, les lectures sont implicites, bien que ce fonctionnement peut être débranché et la lecture peut alors être programmée.

--
Cordialement,

Philippe SAINT-BERTIN
Registered member
1,110 messages
Popularité : +8 (8 votes)
Posted on October, 11 2019 - 1:24 PM
Merci je comprends mieux mais si je fais
bRésultat = Hrequeteexexute(...)

Le bRésultat me retourne seulement s'il y a erreur?

--
Jean Turcotte
WX 24
Android 8.0 sur Galaxy S8
Laptop Lenovo I7 12GB Ram
Registered member
3,844 messages
Popularité : +227 (347 votes)
Posted on October, 11 2019 - 1:41 PM
Tout est dans la doc. https://doc.pcsoft.fr/fr-FR/?3044080

<Résultat> : booléen
Vrai si l'initialisation de la requête a été effectuée,
Faux dans le cas contraire. La fonction HErreur permet d'obtenir plus d'informations sur le problème rencontré.


Pour savoir si la requête correctement initialisée renvoie des résultats, il faut passer par HNbEnr

--
Il y a peut être plus simple, mais, ça tourne
Registered member
2,566 messages
Popularité : +222 (260 votes)
Posted on October, 11 2019 - 2:44 PM
HexecuteRequete() renvoie vrai si la requête a été exécutée, faux s'il y a eu une erreur.

Ensuite si tu fais un select, il te faut parcourir ton résultat, et utiliser HLitPremier ou POUR TOUT au choix.

La valeur de HEndehors ou HTrouve dans le cas de HLitxxx te permet de savoir s'il reste des résultats dans la source, ici la requête.

--
Cordialement,

Philippe SAINT-BERTIN
Message modified, October, 11 2019 - 2:45 PM