PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Variable Tableau remplie par une table.. (Fusion de fichiers PDF)
Variable Tableau remplie par une table.. (Fusion de fichiers PDF)
Débuté par JCN, 20 juin 2020 23:58 - 3 réponses
Membre enregistré
11 messages
Posté le 20 juin 2020 - 23:58
Bonjour à la communauté (ou bonsoir)
J’ai besoin d’un coup de main ne serait-ce que pour comprendre pourquoi je bloque systématiquement sur ce sujet (la variable tableau remplie par une table). Pour info je ne suis pas codeur de métier mais j’essais de construire des outils avec mes petites mains et ma bonne volonté, donc merci par avance de votre indulgence :) (oui j’ai regardé avant le net, les forums, la doc, les exemples, etc.. et j’ai essayé plein de « truc »)

L’objectif : Fusionner des fichiers PDF à partir d’un tableau.

Le contexte : J’ai un bouton qui sélectionne un répertoire et une procédure et qui remplit une table par programmation (qui n’a qu’une seule colonne) de tous les chemins des fichiers PDF du répertoire, ça marche très bien.

J’ai un autre bouton, qui à pour but de fusionner les ficher de cette table en passant par un tableau. Voici le code et le raisonnement (c’est là ou ça bloque car rien ne se passe) :



//J'identifie ma source (ma table : TABLE_TableFic) et je la prépare
nBfichier est un entier = 0
UnFichier est une chaîne
sMaTable est une chaîne
sMaTable = TABLE_TableFic
POUR TOUTE chaîne UnFichier de sMaTable SEPAREE PAR RC
nBfichier++
FIN


// Je définis ma destination (Le tableau dans lequel la source se déverse) et je la remplie
MonTableauPDF est un tableau de chaînes
POUR TOUTE chaîne UnFichier de sMaTable SEPAREE PAR RC
TableauAjouteLigne(MonTableauPDF,UnFichier )
FIN


// Je fusionne les fichiers dans le répertoire de destination défini à partir de la SAI_recup + son nom.
PDFFusionne(SAI_recup+"fusion.PDF",MonTableauPDF)


Merci d'avance :)
Membre enregistré
3 887 messages
Popularité : +227 (347 votes)
Posté le 21 juin 2020 - 20:31
Bonjour,
TABLE_TableFic est un champ.
Ton affectation
sMaTable = TABLE_TableFic

affecte à sMaTable la valeur retournée par TABLE_TableFic, dans la plupart des cas, un entier (qui dans la plupart des cas est 1, la première ligne du champ,) i.e. sMatable="1".
Une fois ceci connu, on voit tout de suite les conséquences sur le code.

Il faut donc procéder ainsi :
nNBFichier est entier
chMaTable est champ
tabMonTableauPDF est tableau <agrandissement=1> de chaînes
nNoLigne est entier

chMaTable<-TABLE_TableFic
nNbFichier=TableOccurence(chMaTable)

POUR TOUTE LIGNE nNoLigne de chMaTable
TableauAjoute(tabMonTableauPDF,COL_NomFichier[nNoLigne])
FIN


Une solution élégante serait de déclarer MonTableauPDF en variable globale et de lier le champ table à ce tableau (liaison par variable)

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
11 messages
Posté le 23 juin 2020 - 08:24
Un grand merci Voroltinquo, je viens de tester, ça marche parfaitement et j'ai surtout compris le principe. Je suis même étonné de la rapidité de fusion. J'ai une commande similaire ailleurs dans mon "programme" qui fonctionne bien avec uniquement deux fichiers (sans passer par un tableau) qui est légèrement plus lente (taille de fichier presque similaire). Bonne journée :merci:
Membre enregistré
3 887 messages
Popularité : +227 (347 votes)
Posté le 23 juin 2020 - 09:29
JCN a écrit :
j'ai surtout compris le principe

C'est ça le principal. Le code n'est là qu'à titre d'illustration à la limite

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