PDA

Ver la Versión Completa : Cod.Barras no corresponde al numero q realmente es. Al pasarlo por el scaner lee otro


Wonni
12-02-2007, 14:53:06
Otro problemilla con los codigos de barras:

Genero codigos de barra Ean13 e imprimo con una BZB 2 (http://www.dooyoo.es/otras-impresoras/c-itoh-bzb-2/). Todo funciona bien, pero hay algun que otro (muy pocos) codigo que el numero es por ejemplo:

8400000001121 y al pasar la etiqueta por el lector me lee 8400000001120


El codigo de barras lo genero con este codigo:


Function MakeEan13(Cadena:String):String;

Var
SumaImp, Sumapar, SumaTotal, DC:Integer;

Begin


If Length(Cadena)<10 Then
Repeat
Cadena:='0'+Cadena;
Until
Length(Cadena)=10;

Cadena:='84'+Cadena;

// SUMAR POSICIONES IMPARES


SumaImp:=StrToInt(Cadena[1])+StrToInt(Cadena[3])+StrToInt(Cadena[5])+
StrToInt(Cadena[7])+StrToInt(Cadena[9])+StrToInt(Cadena[11]);

SumaPar:=StrToInt(Cadena[2])+StrToInt(Cadena[4])+StrToInt(Cadena[6])+
StrToInt(Cadena[8])+StrToInt(Cadena[10])+StrToInt(Cadena[12]);

SumaPar:=SumaPar*3;

SumaTotal:=SumaPar+SumaImp;

DC:=10-StrToInt(IntToStr(SumaTotal)[Length(IntToStr(SumaTotal))]);


If DC>0 Then
Begin
Result:=Cadena+IntToStr(DC);
End Else
Begin
Result:=Cadena+'0';
End;

End;




La forma de calcularlo lo saque de esta pagina:

http://www.argcon.net/normalizacion/norma10.htm

El componente que utilizo para los codigos de barraes este:

http://www.psoft.sk/


El scaner es un Metrologic Voyager MS9520
(http://www.europe.metrologic.com/europe/es/products/retail/overview/Lectores-de-mano/12_MS9520-Voyager/moreinfo/index.html)

Onti
12-02-2007, 15:46:06
Si tienes los componentes de Psoft, para que utilizas otro componente para generar código de barra?

Wonni
13-02-2007, 11:32:17
Resulta que antes de tener que crear las etiquetas, yo creaba un codigo de barras ean13 "correcto" a partir del codigo auntoincrementable del articulo con la función que he indicado. Despues llego el tema de imprimirlos y opté por los componentes de Psoft. Pero se me pasó por alto una propiedad de estos componentes llamada AutoCheckDigit.

Lo que veo es que el digito de control no lo calcula igual que con la funcion, porque si no, no hubiese habido problema. Pero claro, ahora, al crear el articulo ya no calculo yo el digito de control lo hago con el componente de Psoft, ya que asi todo el proceso sera el mismo y no debe dar fallos.

En fin, que deberia haberme estudiado bien el componente. Las prisas :o porque me dijeron: "no, hasta la proxima temporada no imprimiremos etiquetas". Y 4 dias antes de tener que dar de alta entonces cambiaron de opinion. Ala, a correr !!

Gracias Onti :)

Onti
13-02-2007, 15:01:31
a correr :)