PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → fusion de plusieurs états
fusion de plusieurs états
Débuté par Calimero, 02 aoû. 2023 20:54 - 3 réponses
Membre enregistré
90 messages
Posté le 02 août 2023 - 20:54
Bonjour à tous,

Depuis mon champ table commandes, je voudrais imprimer les factures des lignes qui sont sélectionnées.

2 problèmes se posent, tout d'abord, vu que c'est plus de 500 factures / mois, je voudrais que toutes mes factures soient dans un seul fichier PDF.

Vu que je n'y arrive pas, je me suis dit que j'allais imprimer toutes mes factures dans un dossier et ensuite les fusionner avec un logiciel tel que mergePDF mais le souci est que windev me loupe des factures.

J'ai testé avec une dizaine, il peut m'en imprimer que 8 ou 9 et il ne manque pas toujours les mêmes.

Voici mon code, donc à votre bon coeur ;-)

POUR TOUT LIGNELIGNE SELECTIONNEESELECTIONNEE DE TABLE_Commandes

iInitRequêteEtat(ETAT_Facture_Compta,TABLE_Commandes.COL_Nocommande..Valeur)
iEnchaînementAjoute(ETAT_Facture_Compta,TABLE_Commandes.COL_Nocommande)
iEnchaînementImprime()
FIN
Membre enregistré
193 messages
Posté le 03 août 2023 - 16:34
Bonjour

2 pistes pour faire cela :

- imprimer chaque facture dans un PDF puis fusionner le tout en restant dans windev avec PDFFusionne : https://doc.pcsoft.fr/?1000019712

OU

- créer 1 seul état facture avec une rupture par N°Facture qui prend en paramètre un tableau des n° de facture à imprimer (ou directement la requête SQL) à l'ouverture de l'état construire / jouer la requête qui va bien avec peut-être un SQL du style SELECT * FROM table_facture WHERE NoFacture IN (1,3,...,6...). Attention selon les moteurs il peut y avoir une limite en taille pour une chaine SQL.

J'ai écrit un post qui peut peut-être vous aider sur l'impression d'état par programmation avec windev : https://www.clairinfo.fr/phpBB3/viewtopic.php…

Pour les factures qui manquent votre code est un peu bizarre puisque l'idée de iEnchainementImprime est de terminer l'enchainement des états et d'imprimer. En toute logique il faudrait mettre cette instruction après la boucle !

Enfin pour les parcours de table mémoire je vous recommande plutôt la syntaxe :
POUR TOUTE LIGNE SELECTIONNEE I de MaTableMemoire
Trace(MaTableMemoire[I].NoFacture)
FIN

https://doc.pcsoft.fr/fr-FR/?1510017&name=instruction-pour-tout-pour-tous-parcours-champs
Pensez aussi à supprimer les éventueles filtres utilisateurs par TableDesactiveFiltre(MaTableMemoire) avant la boucle.

Tant que votre boucle ne renvoie pas précisément les bons ID à imprimer pas la peine d'aller plus loin en fait

--
Côme, Clairinfo
Membre enregistré
90 messages
Posté le 03 août 2023 - 21:17
Merci Côme,

Finalement problème résolu et tellement simple. juste mon iEnchainementImprime à mettre après la boucle. Tout s'imprime sans oublier une seule facture et dans un seul PDF. C'est le comptable qui va être content ;-)

Merci beaucoup pour ton aide
Posté le 29 septembre 2025 - 10:45
Côme escribío:
Bonjour

2 pistes pour faire cela :

- imprimer chaque facture dans un PDF puis fusionner le tout en restant dans windev avec PDFFusionne : https://doc.pcsoft.fr/?1000019712

OU

- créer 1 seul état facture avec une rupture par N°Facture qui prend en paramètre un tableau des n° de facture à imprimer (ou directement la requête SQL) à l'ouverture de l'état construire / jouer la requête qui va bien avec peut-être un SQL du style SELECT * FROM table_facture WHERE NoFacture IN (1,3,...,6...). Attention selon les moteurs il peut y avoir une limite en taille pour une chaine SQL.

J'ai écrit un post qui peut peut-être vous aider sur l'impression d'état par programmation avec windev : https://www.clairinfo.fr/phpBB3/viewtopic.php…

Pour les factures qui manquent votre code est un peu bizarre puisque l'idée de iEnchainementImprime est de terminer l'enchainement des états et d'imprimer. En toute logique il faudrait mettre cette instruction après la boucle !

Enfin pour les parcours de table mémoire je vous recommande plutôt la syntaxe :
POUR TOUTE LIGNE SELECTIONNEE I de MaTableMemoire
Trace(MaTableMemoire[I].NoFacture)
FIN

https://doc.pcsoft.fr/fr-FR/?1510017&name=instruction-pour-tout-pour-tous-parcours-champs https://basketballstars-game.io
Pensez aussi à supprimer les éventueles filtres utilisateurs par TableDesactiveFiltre(MaTableMemoire) avant la boucle.

Tant que votre boucle ne renvoie pas précisément les bons ID à imprimer pas la peine d'aller plus loin en fait

--
Côme, Clairinfo


Merci pour les pistes et les explications détaillées ! La seconde solution avec rupture par facture et requête SQL me semble plus propre, je vais tester.