Gros Pb avec codes barre en EAN13
DSI WDF
Inscrit:
06/04/2004 12:07
Post(s): 337
Voila, j'ai une application qui tournait chez un client depuis quelques temps, cette application génére, entre autre, des codes barres.

J'ai un code unique à 11 chiffres, et je calcul la clé de controle moi même. Ensuite j'imprime des codes barre de type EAN13 sous windev en envoyant mon code de 12Chiffres (11 chiffres du code + 1controle).

Le problème c'est que sur certains codes, la clé de controle que je calcul n'est pas la même que celle que calcul windev pour l'impression. Du coup je me retrouve à imprimer un code différent de la valeur envoyée.

Par exemple pour le code 00000010638, je calcul 6 en clé, ça me donne : 000000106386, mais mon état imprime le code 000000106382.

Ci dessous mon algo de calcul de la clé de controle :

PROCEDURE calculControleEAN13(_codeInitial)
temp est un entier
sommePair, sommeImpair sont des entiers
z est un entier
m est un entier
controle est un entier
chaineControle est une chaîne

i est un entier = 1
BOUCLE(Taille(_codeInitial))
	temp = _codeInitial[[i A i]]
	SI EstPair(i+1) ALORS
		sommePair += temp
	SINON
		sommeImpair += temp
	FIN
	i++
FIN

z = 3*sommeImpair + sommePair
m = z
BOUCLE
	SI modulo(m,10) = 0 ALORS SORTIR
	m++	
FIN

controle = m - z

chaineControle = controle

RENVOYER chaineControle


Les codes sont issus de codes articles de type 9999, que je complète à gauche par un nombre de 0 variable afin d'avoir toujours la même longeur. Le problème est apparut aves les codes de plus de 4 chiffres. Néanmoins ce problème n'affecte pas tous les codes barre

Contribution le : 16/02/2006 18:02
Créer un fichier PDF de la contribution Imprimer


Re: Gros Pb avec codes barre en EAN13
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Votre procédure de calcul de clé EAN 13 est fausse ...

En voici une correcte (code tapé à la volée non vérifié):
P.S. : Faire un petit tour dans les dossiers de la forge ...
charte de nommage par exemple.
P.S. 2 : Un code EAN 13 est composé de 12 chiffres + 1 caractère de contrôle sinon ce n'est pas de l'EAN 13 :)

PROCEDURE calculControleEAN13(_codeInitial)
temp est un entier
sommePair, sommeImpair sont des entiers
z est un entier
m est un entier
controle est un entier
chaineControle est une chaîne

i est un entier

pour i=1 à Taille(_codeInitial)
	temp = val( _codeInitial[[i]] )
	SI EstPair(i) ALORS
		sommePair += temp
	SINON
		sommeImpair += (temp * 3)
	FIN
FIN

z = sommeImpair + sommePair

m = modulo(z,10)

controle = 10 - m

chaineControle = controle

RENVOYER chaineControle



Bon dév.,

Totof

Contribution le : 16/02/2006 23:50
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2