PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → CODE SUR MON BOUTON IMPRIMER
CODE SUR MON BOUTON IMPRIMER
Débuté par dastedi, 18 juil. 2017 16:52 - 2 réponses
Posté le 18 juillet 2017 - 16:52
Je suis un débutant en programmation Windev, j'ai créer un ETAT issu d'une requête sur une table.
avec deux conditions : la date de commande et le nom du client.
Lorsque je teste l'etat tout fonctionne bien.
Mais pendant un teste sur la fenêtre , rien ne marche . l'etat affiche la commande de tous les clients en même temps .
Aidez moi pour ce soucis. voici les captures d’écran.




Salomon D.
dastedi@yahoo.fr
Membre enregistré
1 330 messages
Posté le 18 juillet 2017 - 22:14
Salut Salomon,

Je pense que tu dois être non seulement débutant en Windev, mais débutant tout cours ;)
Il y a quelques grosses erreurs de programmation dans ton code.
Bon allez faut bien débuter un jour mais je te conseille de bien suivre le guide d'autoformation de Windev et quelques principes de base en programmation tels que les boucles, les tests, etc.

Alors voici le décryptage de ton code

TableSupprimeTout(TABLE_NouvelleCommande)
sLigne est une chaîne
rNbre est un réel
rComptage est un réel


1. Ta variable rNbre n'est jamais utilisée, donc aucun intérêt de la déclarée (c'est pour cette raison que la variable est soulignée, passe avec la souris juste au dessus et regarde le message.
2. Un réel (si je comprends bien ton code) n'est pas le meilleur type pour sauvegarder le nombre d'enregistrements trouvés.
Je te conseille plutôt :

nVar est un numérique (*) // Déclare un numérique qui s'adapte au contenu et pas de décimale


Ensuite tu dois tester le résultat de ta requête, pour voir si tout c'est bien déroulé, car si la requête ne fonctionne pas rien ne sert de continuer

bRequeteOk = HExécuteRequête(REQ_facture, hRequêteDéfaut, SAI_Client, SAI_Date1, "Nouvellecommande")


Pour un peu de clarter tu peux déclarer et initialiser une variable sur une seule ligne (ton code n'a pas d'erreur, mais on gagne une ligne)

i est un entier = HNbEnr(REQ_facture, hEtatActif)


Ensuite, on attaque la première grosse erreur

pour i=i to 1 step -1
HLit(REQ_facture, i)
sLigne = REQ_facture.DATECDE+TAB+REQ_facture.Nom_prenom+TAB+REQ_facture.prixV+TAB+ Etc.
TableAjoute(TABLE_NouvelleCommande, sLigne)
FIN


1. Tu ne peux pas avoir la même variable qui contient le nombre d'enregistrement et qui fait la boucle

pour j = i to 1 step -1
HLit(REQ_facture, j)
..........
FIN


On arrive à la seconde grosse erreur

SI Droite(SAI_Date1, 1)>=31 ALORS


1. tu compares le dernier caractère et tu regardes si il est supérieur à 31 (comparer une chaine avec un numérique, c'est pas top) ensuite ce test sera toujours faux car même si tu avais un test valiide la valeur ne peut-être comprise qu'entre 0 et 9 donc elle ne sera jamais supérieur ou égale à 31
2. cela ne sert strictement à rien le bloc complet du SI, tu as déjà effectué une requête avec les mêmes paramètres, alors pourquoi refaire un test ?

Et pour finir :

i = TABLE_NouvelleCommande..Occurence


Pourquoi initialiser i, tu ne l'utilise plus après

TableTrie(TABLE_NouvelleCommande, "Table_NouvelleCommande.COL_PrixV")


C'est la colonne que tu dois mettre la table ne sert à rien puisque tu tries cette table donc faut juste mettre la colonne

TableTrie(TABLE_NouvelleCommande, "COL_PrixV")


et la dernière ligne

iImprimeEtat(ETAT_BONLIVRAISON, SAI_Date1..valeurAffichée, SAI_Client..ValeurAffichée, rComptage)


1. ..ValeurAffichée ne sert à rien
2. rComptage est passé en paramètre mais n'a jamais été initialisé

A+
Daryl

--
http://www.concept4u2.com
Posté le 19 juillet 2017 - 19:31
Bjr,

SALOMON avait prétendu :
Je suis un débutant en programmation Windev, j'ai créer un ETAT issu d'une
requête sur une table.
avec deux conditions : la date de commande et le nom du client.
Lorsque je teste l'etat tout fonctionne bien.
Mais pendant un teste sur la fenêtre , rien ne marche . l'etat affiche la
commande de tous les clients en même temps .
Aidez moi pour ce soucis. voici les captures d’écran.




Salomon D.
dastedi@yahoo.fr


En plus des conseils donnés par Daryl qui sont bons, pourquoi ne pas
prendre ta requete come FichierParcouru de ta table. (Onglet "contenu"
de la description de ta table)

A moins que quelquechoes m'echappe, mais tu dois pouvoir supprimer tout
ton code... sauf les 3 dernieres lignes

Tu me meme donner ta requete come source de l'etat, et tu peux meme
enlever ta table..

a plus

--
-------------------------------------------------------------
www.ctc-soft.com
Gestion biblo-documentaire (free-share)
Comptabilité shareware
Logiciels de Gestion de saisie terrain
Spécialisé Tournées de boulangers
-------------------------------------------------------------