Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11] iImprimeEtat et paramètres

15 réponses
Avatar
Olivier
Bonjour,
J'ai un état générique qui me sert à imprimer aussi bien une facture
qu'un devis ou un rapport d'intervention. Je lance donc l'impression
par l'appel à une procédure :

iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

Et à l'ouverture de l'état :

PROCEDURE ETAT_Facture(_CleUnik_B1, _CleUnik_B2, _TypeEtat = "Facture")

C'est un état borné sur la clé unique transmise et une chaine pour
choisir le type de l'état. Seulement voila, sous le debugger on
s'apperçoit que les paramètres arrivent dans un ordre différent de
celui transmis et donc ça imprime n'importe quoi ou rien du tout ou
pire il me sort une erreur :

Erreur à la ligne 4 du traitement Clic sur IMP_FACTURE.
Vous avez appelé la fonction iImprimeEtat.
Les paramètres d'ouverture de l'état 'ETAT_Facture' sont incorrects :
on attendait entre 2 et 3 paramètres et on en a reçu 1.

Avez-vous déjà rencontrer ce type de problème et comment l'avez-vous
résolu.

Merci pour votre aide, Olivier

10 réponses

1 2
Avatar
SSX99
Bonjour,

reintegrer l'etat et recompiler
si vous avez le groupware developpeur activé

autre possibilite effacer le rep .cpl et recompiler le projet

Bon dev
@+


"Olivier" a écrit dans le message de news:
4908cc25$0$14763$
Bonjour,
J'ai un état générique qui me sert à imprimer aussi bien une facture qu'un
devis ou un rapport d'intervention. Je lance donc l'impression par l'appel
à une procédure :

iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

Et à l'ouverture de l'état :

PROCEDURE ETAT_Facture(_CleUnik_B1, _CleUnik_B2, _TypeEtat = "Facture")

C'est un état borné sur la clé unique transmise et une chaine pour choisir
le type de l'état. Seulement voila, sous le debugger on s'apperçoit que
les paramètres arrivent dans un ordre différent de celui transmis et donc
ça imprime n'importe quoi ou rien du tout ou pire il me sort une erreur :

Erreur à la ligne 4 du traitement Clic sur IMP_FACTURE.
Vous avez appelé la fonction iImprimeEtat.
Les paramètres d'ouverture de l'état 'ETAT_Facture' sont incorrects : on
attendait entre 2 et 3 paramètres et on en a reçu 1.

Avez-vous déjà rencontrer ce type de problème et comment l'avez-vous
résolu.

Merci pour votre aide, Olivier




Avatar
Olivier
J'avais essayé cette solution que je connaissais de Wd5, mais ça n'a
rien changé.
Olivier

Il se trouve que SSX99 a formulé :
Bonjour,

reintegrer l'etat et recompiler
si vous avez le groupware developpeur activé

autre possibilite effacer le rep .cpl et recompiler le projet

Bon dev
@+


"Olivier" a écrit dans le message de news:
4908cc25$0$14763$
Bonjour,
J'ai un état générique qui me sert à imprimer aussi bien une facture qu'un
devis ou un rapport d'intervention. Je lance donc l'impression par l'appel
à une procédure :

iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

Et à l'ouverture de l'état :

PROCEDURE ETAT_Facture(_CleUnik_B1, _CleUnik_B2, _TypeEtat = "Facture")

C'est un état borné sur la clé unique transmise et une chaine pour choisir
le type de l'état. Seulement voila, sous le debugger on s'apperçoit que les
paramètres arrivent dans un ordre différent de celui transmis et donc ça
imprime n'importe quoi ou rien du tout ou pire il me sort une erreur :

Erreur à la ligne 4 du traitement Clic sur IMP_FACTURE.
Vous avez appelé la fonction iImprimeEtat.
Les paramètres d'ouverture de l'état 'ETAT_Facture' sont incorrects : on
attendait entre 2 et 3 paramètres et on en a reçu 1.

Avez-vous déjà rencontrer ce type de problème et comment l'avez-vous
résolu.

Merci pour votre aide, Olivier






Avatar
mat
Olivier wrote on 29.10.2008 :
...
iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

Et à l'ouverture de l'état :

PROCEDURE ETAT_Facture(_CleUnik_B1, _CleUnik_B2, _TypeEtat = "Facture")


...
Les paramètres d'ouverture de l'état 'ETAT_Facture' sont incorrects : on
attendait entre 2 et 3 paramètres et on en a reçu 1.



Bonsoir,

L'état reçoit les paramètres dans le même ordre que iImprimeEtat les
envoie. L'explication est bien dans le message d'erreur: l'état attend
2 ou 3 paramètres mais ne reçoit qu'un seul. Donc vérifier la valeur
des paramètres dans iImprimeEtat.

Salutations
Mat
Avatar
Olivier
mat avait écrit le 29/10/2008 :
Olivier wrote on 29.10.2008 :
...
iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

Et à l'ouverture de l'état :

PROCEDURE ETAT_Facture(_CleUnik_B1, _CleUnik_B2, _TypeEtat = "Facture")


...
Les paramètres d'ouverture de l'état 'ETAT_Facture' sont incorrects : on
attendait entre 2 et 3 paramètres et on en a reçu 1.



Bonsoir,

L'état reçoit les paramètres dans le même ordre que iImprimeEtat les envoie.
L'explication est bien dans le message d'erreur: l'état attend 2 ou 3
paramètres mais ne reçoit qu'un seul. Donc vérifier la valeur des paramètres
dans iImprimeEtat.

Salutations
Mat



Bonjour,
J'ai vérifié et revérifié. J'ai bien mes 3 paramètres qui partent dans
l'ordre et qui arrivent dans le désordre. C'est à dire que le 1 er
paramètre (_CleUnik_B1) qui est égale à la clé unique de la fiche, me
donne dans l'ouverture de l'état _CleUnik_B1 = "Devis".
C'est quand même hallucinant !

Slt, Olivier
Avatar
patrice
"Olivier" a écrit dans le message de
news:4908cc25$0$14763$
Bonjour,
J'ai un état générique qui me sert à imprimer aussi bien une facture
qu'un devis ou un rapport d'intervention. Je lance donc l'impression
par l'appel à une procédure :

iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")




attention, y'a un risque en windev
Les parametres sont passés par adresses (modifiable par l'appelant)
donc en gros, si iImprimeEtat change la position courante de ton fichier
client, la valeur Client.CLCLEUNIK change aussi

exemple:
hlitrecerchepremier(client,clclunik,"macle")
titi(client.clcleunik)


procedure titi(s est une chaine)
hlitpremier(client)
info(s)


il va afficher tout sauf ce que tu attend

Avec les fichiers, pense à utiliser la notation () qui permet de faire une
copie du parametre
exemple:
titi((client.clcleunik))
iImprimeEtat(ETAT_Facture, (Client.CLCLEUNIK), (Client.CLCLEUNIK), "Devis")
Avatar
Eric Laurent
Une solution que j'utilisais en Windev 5.5 consitait à utiliser des
variables globales:
Au lieu de passer des paramètres, il suffit de valider les variables
globales que l'on utilisera à l'ouverture de l'état.
C'est un cache-misère mais ça marche.

Cordialement,

Eric

--
Eric Laurent

(enlever nospam.)
Avatar
mat
Olivier wrote on 30.10.2008 :
mat avait écrit le 29/10/2008 :
Bonsoir,

L'état reçoit les paramètres dans le même ordre que iImprimeEtat les
envoie. L'explication est bien dans le message d'erreur: l'état attend 2 ou
3 paramètres mais ne reçoit qu'un seul. Donc vérifier la valeur des
paramètres dans iImprimeEtat.

Salutations
Mat



Bonjour,
J'ai vérifié et revérifié. J'ai bien mes 3 paramètres qui partent dans
l'ordre et qui arrivent dans le désordre. C'est à dire que le 1 er paramètre
(_CleUnik_B1) qui est égale à la clé unique de la fiche, me donne dans
l'ouverture de l'état _CleUnik_B1 = "Devis".
C'est quand même hallucinant !

Slt, Olivier



Bonsoir,

Les messages d'erreur de Windev sont généralement corrects et celui en
question dit que l'état ne reçoit que 1 paramètre, pas les 2 ou trois
qu'il attend. Vraisemblablement iImprimeEtat n'envoie pas de valeur
pour la clé unique (Null) ce qui fait que le seul paramètre qui arrive
est "Devis", en première position. Un DEBUG sur les paramètres
d'iImprimeEtat peut éclaircir cela.

Sinon, essayer avec cela
//Début
ID est entier = Client.CLCLEUNIK
// tester la valeur de l'ID
info(ID)
iImprimeEtat(ETAT_Facture, ID, ID, "Devis")
//Fin

Si info() montre une valeur et l'état plante toujours, je contacterais
le ST de PC Soft qui ont peut-être déjà vu ce phénomène.

Salutations
Mat
Avatar
mat
mat wrote on 30.10.2008 :
Bonsoir,

Les messages d'erreur de Windev sont généralement corrects et celui en
question dit que l'état ne reçoit que 1 paramètre, pas les 2 ou trois qu'il
attend. Vraisemblablement iImprimeEtat n'envoie pas de valeur pour la clé
unique (Null) ce qui fait que le seul paramètre qui arrive est "Devis", en
première position. Un DEBUG sur les paramètres d'iImprimeEtat peut éclaircir
cela.

Sinon, essayer avec cela
//Début
ID est entier = Client.CLCLEUNIK
// tester la valeur de l'ID
info(ID)
iImprimeEtat(ETAT_Facture, ID, ID, "Devis")
//Fin

Si info() montre une valeur et l'état plante toujours, je contacterais le ST
de PC Soft qui ont peut-être déjà vu ce phénomène.

Salutations
Mat




une autre idée: probablement l'état utilise un contexte Hyperfile
indépendant. Dans ce cas pour l'état aucun enregistrement est lu, donc
Null, ignoré par Windev.

Mat
Avatar
Moua
Le 29/10/2008, Olivier a supposé :
Bonjour,
J'ai un état générique qui me sert à imprimer aussi bien une facture qu'un
devis ou un rapport d'intervention. Je lance donc l'impression par l'appel à
une procédure :

iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

Et à l'ouverture de l'état :

PROCEDURE ETAT_Facture(_CleUnik_B1, _CleUnik_B2, _TypeEtat = "Facture")

C'est un état borné sur la clé unique transmise et une chaine pour choisir le
type de l'état. Seulement voila, sous le debugger on s'apperçoit que les
paramètres arrivent dans un ordre différent de celui transmis et donc ça
imprime n'importe quoi ou rien du tout ou pire il me sort une erreur :

Erreur à la ligne 4 du traitement Clic sur IMP_FACTURE.
Vous avez appelé la fonction iImprimeEtat.
Les paramètres d'ouverture de l'état 'ETAT_Facture' sont incorrects : on
attendait entre 2 et 3 paramètres et on en a reçu 1.

Avez-vous déjà rencontrer ce type de problème et comment l'avez-vous résolu.

Merci pour votre aide, Olivier


Bonjour,

Je pense résumer les commentaires :

Quelle drôle d'idée de passer en paramètre l'adresse mémoire d'un champ
d'un fichier qui risque d'être parcouru par l'état.

Il faut passer le paramètre par valeur et non par adresse, ou utiliser
des variables intermédiaires.
Avatar
Daireaux Jean-Baptiste
Olivier a écrit :
Bonjour,
J'ai un état générique qui me sert à imprimer aussi bien une facture
qu'un devis ou un rapport d'intervention. Je lance donc l'impression par
l'appel à une procédure :

iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

Et à l'ouverture de l'état :

PROCEDURE ETAT_Facture(_CleUnik_B1, _CleUnik_B2, _TypeEtat = "Facture")

C'est un état borné sur la clé unique transmise et une chaine pour
choisir le type de l'état. Seulement voila, sous le debugger on
s'apperçoit que les paramètres arrivent dans un ordre différent de celui
transmis et donc ça imprime n'importe quoi ou rien du tout ou pire il me
sort une erreur :

Erreur à la ligne 4 du traitement Clic sur IMP_FACTURE.
Vous avez appelé la fonction iImprimeEtat.
Les paramètres d'ouverture de l'état 'ETAT_Facture' sont incorrects : on
attendait entre 2 et 3 paramètres et on en a reçu 1.

Avez-vous déjà rencontrer ce type de problème et comment l'avez-vous
résolu.

Merci pour votre aide, Olivier





Quand le comportement est bizarre, je refait un nouvelle état où je
copie tout les éléments de l'ancien sans changé une ligne de code. Et
bien souvent le problème disparé. Il arrive que des états ou des fenêtre
de windev se mette à déconner sans que la recompilation ou la
suppression des CPL ne la rétablisse.

J.B.D.
1 2