PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Probleme etat interne
Probleme etat interne
Iniciado por Fany, ago., 21 2018 5:04 PM - 4 respostas
Membro registado
365 mensagems
Popularité : +12 (12 votes)
Publicado em agosto, 21 2018 - 5:04 PM
Bonjour à tous,

Après avoir pas mal cherché, je n'ai toujours pas réponse à mon problème. Dès que je veux afficher plusieurs fois un état principal contenant un etat interne, ça plante. Je m'explique :

J'ai un etat "ETAT_P" qui contient un champ "Etat interne"
L'état secondaire "ETAT_S1" contenu dans le champ etat interne récupere une variable globale dont sa valeur est définie à l'ouverture de l'état "ETAT_P"

J'ai utilisé la description du champ pour faire lier mon champ état interne avec l'état "ETAT_S1" --> jusque là ok.

Dans "ouverture de ETAT_S1", j'ai mis ce code :
HExécuteRequête(REQ_MaRequete,hRequêteDéfaut,ETAT_P.gnIDProjet,1)
HLitPremier(REQ_MaRequete)


Dans "Lecture des données de ETAT_S1"
TANTQUE HEnDehors(REQ_MaRequete)=Faux
RENVOYER Vrai
FIN


et ensuite j'affiche les infos que je souhaite dans "Avant impression de ETAT_S1"
LIB_Prescrit = REQ_MaRequete.Prescrit

HLitSuivant(REQ_MaRequete)


Le code pour ouvrir mon ETAT_P est le suivant :
iAperçu(i100)
POUR TOUTE LIGNE SELECTIONNEE nIndice de TABLE_Gantt
iEnchaînementAjoute(ETAT_Projet,TABLE_Gantt[nIndice].COL_IDProjet)
FIN
iEnchaînementImprime()


--> si je ne sélectionne qu'une ligne de mon champ TABLE_Gantt, ça fonctionne
--> si je sélectionne plusieurs lignes de mon champ TABLE_Gantt --> CA FONCTIONNE PLUS ;(
Le message d'erreur me dit qu'il faut que je recompile mon code.

J'ai réussi à isoler le problème : si je met une variable bidon fixe à ma requete de ETAT_S1, ça fonctionne.
Je dois me planter dans le passage de paramètre.

J'ai lu ici (https://doc.pcsoft.fr/?1013044&verdisp=160) que :
"Etat secondaire basé sur une requête paramétrée
Si l'état secondaire est basé sur une requête paramétrée, utilisez la fonction iInitRequêteEtat pour passer les paramètres à la requête. Cette fonction doit être utilisée dans le traitement "Avant impression" du bloc contenant le champ "Etat Interne"."

--> j'ai rajouté dans le code "Avant impression du bloc DEBUT DE DOCUMENT" :
iInitRequêteEtat(ETAT_S1,gnIDProjet,1)


--> rien ne marche.

Sincèrement j'ai essayé plein d'autres trucs, des solutions du dernier espoir, rien à faire. Je ne comprends pas comment faire.

Auriez vous s'il vous plait une piste à me donner ?

D'avance merci

Fany
Membro registado
365 mensagems
Popularité : +12 (12 votes)
Publicado em agosto, 22 2018 - 4:19 PM
Pas d'idée ? ;(
Membro registado
119 mensagems
Popularité : +1 (1 vote)
Publicado em setembro, 10 2018 - 3:39 PM
Bonjour Fany
Tu as trouvé le problème ?
J'ai aussi un plantage avec iEnchaînementImprime() sur certains poste clients, je me demande si ce n'est pas suite à une mise à jour Windows

Merci
José
Publicado em setembro, 21 2018 - 9:11 PM
Bonjour,

Ce n'est plus simple d'utiliser les états imbriqués ?
J'utilise que des états imbriqués et je n'ai jamais rencontré ce genre de problème.

La notice dit ceci.
Passer des paramètres à un état interne
Les paramètres donnés à l'état (lors de l'appel à la fonction iImprimeEtat) sont automatiquement transmis à l'état interne. Attention, dans ce cas, le passage par adresse des paramètres n'est pas garanti.

Amicalement,
Membro registado
365 mensagems
Popularité : +12 (12 votes)
Publicado em setembro, 24 2018 - 10:06 AM
Bonjour,

Non je n'ai toujours pas trouvé le problème. Ce qui est étrange, c'est qu'avant, ça fonctionnait. Je pouvais imprimer plusieurs lignes de mon tableau. Et du jour au lendemain, ça ne marchait plus. Donc effectivement, peut être qu'un mise à jour peut en être la cause.

Merci Christophe pour votre réponse. Je pourrais comme vous dites utiliser les états imbriqués, mais sauf erreur de ma part, je crois que ces derniers ne s'affichent que les uns en dessous des autres, et cette mise en page ne correspondait pas vraiment à ce que je voulais afficher.... si vraiment je ne trouve pas de solution, je tenterai votre solution.
Comme vous l'avez cité, "le passage par adresse des paramètres n'est pas garanti"... je confirme, vous avez raison ^^