PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV (versões anteriores) → Etat table mémoire par programmation
Etat table mémoire par programmation
Iniciado por Ludwig, jul., 14 2024 11:04 PM - 6 respostas
Membro registado
21 mensagems
Publicado em julho, 14 2024 - 11:04 PM
Bonjour à tous,

Je cherche quelques explications et/ou aides.
J'ai une table mémoire alimentée par programmation.
Je souhaiterais imprimer l'état de cette table mémoire en la parcourant.
Ainsi, en fonction de la ligne parcourue j'ajouterai ou pas la ligne, je regrouperai ou pas plusieurs lignes, ferai des calculs, etc...
Mais, je ne sais pas du tout comment m'y prendre pour récupérer les données de la table mémoire.
Je peux boucler sur la table mais un message s'affiche : "Aucune donnée à imprimer" ou ça boucle en boucle et l'aperçu est infini.

Quel code est à placer dans le code de l'état et comment récupérer les données pour traitement dans le code du bloc corps ?

Par avance merci.
Membro registado
4.061 mensagems
Popularité : +227 (347 votes)
Publicado em julho, 15 2024 - 5:46 AM
Bonjour,
Une solution serait
1-Récupérer les données de ton champ source dans un tableau de structure/classe.
2-Passer cette variable en paramètre de ton état.

Ton état sera créé à partir de la structure/classe concernée.
Note : Il faut définir le tableau de classe/structure en tant que variable globale au projet

Prenons le cas d'un champ table comportant les colonnes N°Client/PrénomClient/NomClient
1-On va créer la classe CCLient:
CClient est une Classe
m_saNoClient est une chaîne
m_saNomClient est une chaîne
m_saPrenomClient est une chaîne
FIN

2-On déclare la variable gtabListeClient globale au projet (pour être vue de la fenêtre dans laquelle se trouvent nos données ainsi que de l'état)
3-On crée notre état "Tableau" basé sur une variable à savoir gtabListeClient
4-Le code de l'impression devrait ressembler à cela;
InitialiserParamètre() //On remplit gtabListeCLient

iDestination(iVisualisateur) //ou une autre destination
iImprimeEtat(ETAT_Clients,gtabListeClient)

avec
Procedure InitialiserParamètre()

clUnClient est CClient
nIndice est un entier

POUR nIndice=1 _À_ TableOccurrence(TABLE_Client)
clUnClient:m_saNoClient = COL_NoClient[nIndice]
clUnClient:m_saPrenomClient = COL_PrenomClient[nIndice]
clUnClient:m_saNomClient = COL_NomClient[nIndice]
TableauAjoute(gtabListeClient,clUnClient)
FIN

--
Il y a peut être plus simple, mais, ça tourne
Mensagem modificada, julho, 15 2024 - 6:51 AM
Membro registado
2.646 mensagems
Popularité : +222 (260 votes)
Publicado em julho, 15 2024 - 9:12 AM
Bonjour,

Pour info, si tu crées ton état selon l'exemple de Voroltinquo, qui me semble être une très bonne solution, il n'est pas nécessaire que le tableau soit déclaré en globale au projet. Il suffit se passer le tableau en paramètre à l'état et d'avoir comme source de données le tableau passé en paramètre.

Une autre solution calquée sur l'exemple de Voroltinquo serait de créer une 2ème table mémoire qui contiendrait le résultat de ce que tu souhaites imprimer et baser ton état sur cette table.

--
Cordialement,

Philippe SAINT-BERTIN
Membro registado
21 mensagems
Publicado em julho, 15 2024 - 9:47 AM
Bonjour,

Merci beaucoup pour ton retour.
J'ai une erreur cela me renvoie que "Un élément de type 'CClient' ne peut pas être converti vers le type 'chaîne ANSI'."
J'ai déclaré gtabListeClient comme tableau de chaines. (?)

Encore merci.
Membro registado
2.646 mensagems
Popularité : +222 (260 votes)
Publicado em julho, 15 2024 - 5:43 PM
Il va falloir un peu plus de code pour t'aider mais je peux d'ores et déjà dire que gtabListeClient doit être un tableau de CClient

--
Cordialement,

Philippe SAINT-BERTIN
Membro registado
21 mensagems
Publicado em julho, 15 2024 - 5:52 PM
Merci,

Jai opté pour une deuxième table mémoire. (C'est plus de mon niveau ;)).
Ca fait l'affaire, pour le moment.

Je vais tout de même creuser l'idée de Voroltinquo. :merci:

Encore merci à vous deux et bonne journée.
Membro registado
4.061 mensagems
Popularité : +227 (347 votes)
Publicado em julho, 16 2024 - 8:52 AM
Ludwig a écrit :
J'ai déclaré gtabListeClient comme tableau de chaines. (?)

gtabListeClient est un tableau de CClient

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