PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Intégrer un mémoTexte dans une requete
Intégrer un mémoTexte dans une requete
Iniciado por Jean TURCOTTE, out., 09 2019 12:27 AM - 13 respostas
Membro registado
1.110 mensagems
Popularité : +8 (8 votes)
Publicado em outubro, 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
Membro registado
81 mensagems
Popularité : +2 (4 votes)
Publicado em outubro, 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
Membro registado
1.623 mensagems
Popularité : +100 (114 votes)
Publicado em outubro, 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.
Publicado em outubro, 09 2019 - 12:44 PM
Aurais-tu un HGereMemo(Faux) dans ton code?
Sinon je ne vois pas...
Membro registado
1.110 mensagems
Popularité : +8 (8 votes)
Publicado em outubro, 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
Membro registado
2.566 mensagems
Popularité : +222 (260 votes)
Publicado em outubro, 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
Membro registado
1.623 mensagems
Popularité : +100 (114 votes)
Publicado em outubro, 10 2019 - 5:50 PM
Bien vu !
Tellement focus sur le problème du format Memo ...
Membro registado
1.110 mensagems
Popularité : +8 (8 votes)
Publicado em outubro, 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
Membro registado
1.110 mensagems
Popularité : +8 (8 votes)
Publicado em outubro, 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
Membro registado
3.845 mensagems
Popularité : +227 (347 votes)
Publicado em outubro, 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
Mensagem modificada, outubro, 11 2019 - 5:59 AM
Membro registado
2.566 mensagems
Popularité : +222 (260 votes)
Publicado em outubro, 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
Membro registado
1.110 mensagems
Popularité : +8 (8 votes)
Publicado em outubro, 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
Membro registado
3.845 mensagems
Popularité : +227 (347 votes)
Publicado em outubro, 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
Membro registado
2.566 mensagems
Popularité : +222 (260 votes)
Publicado em outubro, 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
Mensagem modificada, outubro, 11 2019 - 2:45 PM