OVH Cloud OVH Cloud

[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

5 réponses

1 2
Avatar
Olivier
Moua a formulé la demande :
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 s'agit en l'occurrence de la valeur de la clé unique de
l'enregistrement...

Il faut passer le paramètre par valeur et non par adresse, ou utiliser des
variables intermédiaires.


Il n'y a aucun parcours du fichier, juste l'impression d'un seul
enregistrement...

Merci
Avatar
VPSoft
"Olivier" a écrit dans le message de news:
490b3fdb$0$30699$
Moua a formulé la demande :
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 s'agit en l'occurrence de la valeur de la clé unique de
l'enregistrement...

Il faut passer le paramètre par valeur et non par adresse, ou utiliser
des variables intermédiaires.


Il n'y a aucun parcours du fichier, juste l'impression d'un seul
enregistrement...

Merci





Salut,

Selon moi, 2 possibilités (déjà évoquées) :

1) N° ID farfelus (pour x raisons). Faudrait essayer : mettre les 2 premiers
param dans des variables locales avant appel et tester si valeur >0

2) créer un nouvel état bidon juste pour voir si le prob vient de l'état lui
même

Espérant avoir aidé,

Victor
Avatar
Olivier
Daireaux Jean-Baptiste avait prétendu :
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.



Bonjour et merci pour vos idées et vos pistes, mais plus je teste,
moins j'y comprend quelque chose, et pourtant j'utilise windev depuis
la version 4.1 et régulièrement, les procédures et fonctions.

J'ai testé l'idée de refaire un état avec en ouverture d'état la ligne
suivante :
[CODE]PROCEDURE ETAT_Etat1(a1, b1)[/CODE]
Au lancement du test directement à partir de l'état, j'ai cette erreur
:
Erreur :Erreur de syntaxe sur le mot v00000004ffffffff1.
ETAT_Etat1, Ouverture, ligne 1, colonne 65
Plutôt surprenant, non ?

J'ai essayé aussi de passer par une variable intermédiare.
Le code de lancement de l'état :
[CODE]
sChoixEtat est chaîne = "Facture"
nCleUnik est entier = Client.CLCLEUNIK
Info(nCleUnik)
iImprimeEtat(ETAT_Facture, nCleUnik, nCleUnik)
[/CODE]
Code dans l'ouverture de l'état :
[CODE]
PROCEDURE ETAT_Facture(gn_CleUnik_B1 est entier = 0, gn_CleUnik_B2 est
entier = 0)
[/CODE]

Cette écriture fonctionne, mais la suivante ne fonctionne pas. J'ai
uniquement rajouté en dernier paramètre une chaine :
Le code de lancement de l'état :
[CODE]
sChoixEtat est chaîne = "Facture"
nCleUnik est entier = Client.CLCLEUNIK
Info(nCleUnik)
iImprimeEtat(ETAT_Facture, nCleUnik, nCleUnik, sChoixEtat)
[/CODE]
Code dans l'ouverture de l'état :
[CODE]
PROCEDURE ETAT_Facture(gn_CleUnik_B1 est entier = 0, gn_CleUnik_B2 est
entier = 0, gs_TypeEtat = "Facture")
[/CODE]
Au DEBUG, le 1er paramètre = 0, le 2ème à la valeur de ma CléUnik et le
3ème a aussi cette valeur mais en chaine.
Y a de quoi se taper la tête contre les murs !
Ou alors ça fait 3 jours que je ne suis pas réveillé...
Avatar
mat
Moua wrote on 31.10.2008 :
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.



Bonsoir,

d'accord mais à mon avis le problème commence chez PC Soft pour avoir
choisi de passer, par défaut, les paramètres par adresse. Les produits
que j'ai utilisé dans le passée (Borland, Microsoft) faisait le
contraire. Soucieux de la cohérence des données (appris avec des outils
Borland), et sachant que le code parfait est une théorie, je préfère
des solutions par défaut qui ne risquent pas de modifier les données.
Mais il semble que c'est une idée démodée car avec VB6 le défaut est
aussi devenu byRef...

Salutations

Mat
Avatar
Olivier
Olivier a pensé très fort :
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



Je crois que j'ai trouvé, mais c'est vraiment tortiller du c.. pour
c...r droit.

Sur un état borné, il faut envoyer les 2 bornes + éventuellement, les
paramètres supplémentaires. Dans l'ouverture de l'état, il ne faut
récupérer que les paramètres supplémentaires.
ex :
iImprimeEtat(ETAT_Facture, Client.CLCLEUNIK, Client.CLCLEUNIK, "Devis")

et
PROCEDURE ETAT_Facture(_TypeEtat = "Facture")

Et la, ça fonctionne. Ceci dit, ça n'est pas une solution évidente,
même en consultant les aides.

Merci à tous, Olivier.
1 2