PDA

Ver la Versión Completa : Problemas con codigo de barras


jfrancho
07-06-2012, 01:25:46
Buenas noches, estoy generando códigos de barras tipo ean13 para un sistema de control de stock y resulta que la mayoría de los códigos generados tienen esta extensión 0000000004646, comienzan con ceros, al momento de realizar una búsqueda para identificar el producto el lector de códigos de barras me toma un dígito menos, el primer cero es como que no lo identifica; el lector es un metrologic voyager ms9520.desde ay agradezco sus respuestas.Saludos.-

Casimiro Notevi
07-06-2012, 09:24:52
el primer cero es como que no lo identifica
Realmente no es que el primer dígito no lo identifique, es que el último dígito es un "checksum" del resto de dígitos y no le "cuadra", así que tienes dos opciones, desactivar el "chequeo" o poner un código "correcto".

newtron
07-06-2012, 09:29:09
El problema es que la mayoría de los lectores están configurados para que si el primer carácter es un cero lo ignoren, entonces hay dos opciones:

1-Configurar el lector para que no ignore si comienza por cero.
2-No usar el cero como inicio del código de barras.

Saludos

jfrancho
07-06-2012, 20:55:33
Muchas gracias por las respuestas voy a probar de habilitar el dígito cero y luego les comento, saludos.-:D

newtron
08-06-2012, 09:24:26
Muchas gracias por las respuestas voy a probar de habilitar el dígito cero y luego les comento, saludos.-:D

Como quieras, yo particularmente optaría por empezar los códigos de barras por un "1" por ejemplo y así no tienes que andar configurando cada lector que quieras usar.

saludos

jfrancho
11-06-2012, 05:47:32
como no he podido configurar el lector de códigos de barras para que lea ceros, lo he resuelto al problema de la siguiente forma:
le digo al edit que si los caracteres ingresados son iguales a 12, me agregue un carácter más, en mi caso un cero.
y este es el código:

var
cant : integer;
cadena : string;
if (length(ecodi1.Text)=12) then
begin
Cadena:=' ';
cant:=13-length(inttostr(strtoint(ecodi1.text)));
for x:=1 to cant do
cadena:=cadena+ '0';
cadena:=cadena+inttostr(strtoint(ecodi1.text));
end

funciona bien, si alguien tiene una solución mejor bienvenida sea, saludos y gracias por las respuestas.-

newtron
11-06-2012, 09:49:41
Bueno... la verdad es que si le vas a dar esa solución no tiene mucho sentido escribir tanto código. Podrías simplificar con esto....

if length(ecodi1.Text)=12 then
ecodi1.Text:='0'+ecodi1.Text;

jfrancho
11-06-2012, 14:25:22
Muchas Gracias Newtron, lo probé y funciona correctamente.
Saludos.-