Ir al contenido


Foto

cabceceras EAN


  • Por favor identifícate para responder
6 respuestas en este tema

#1 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 14 febrero 2015 - 02:00

Adjunto las cabeceras de los códigos EAN.
algunas tienen 2 caracteres y otras 3, yo las organicé como rangos, para evitar crear más entradas, por esta razón se repiten algunas. En fin se las entiende como un rango (Inicio y Fin).
El tercer valor es el nombre de la codificación que se le asigna
El cuarto es el origen (la mayoría de los casos es un pais

Este es el programita que utilicé para procesar el archivo de texto:



pascal
  1. unit Principal;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls, Data.DB, Datasnap.DBClient, Vcl.StdCtrls;
  8.  
  9. type
  10.   TfrmPrincipal = class(TForm)
  11.     dsEan: TDataSource;
  12.     cdsEan: TClientDataSet;
  13.     panGrid: TPanel;
  14.     dbgEan: TDBGrid;
  15.     btProcesar: TButton;
  16.     cdsEancfIni: TIntegerField;
  17.     cdsEancfFin: TIntegerField;
  18.     cdsEancfNomCodif: TStringField;
  19.     cdsEancfOrigen: TStringField;
  20.     procedure btProcesarClick(Sender: TObject);
  21.   end;
  22.  
  23. var
  24.   frmPrincipal: TfrmPrincipal;
  25.  
  26. implementation
  27.  
  28. {$R *.dfm}
  29.  
  30. procedure TfrmPrincipal.btProcesarClick(Sender: TObject);
  31. var
  32.   F: TextFile;
  33.   L: String;
  34.   AP: array[1..4] of String;
  35.   I,J: Integer;
  36. begin
  37.   AssignFile(F, 'eancodes.txt'); // Asigna el archivo que se debe encontrar en la ruta del EXE
  38.   Reset(F);                      // Abre el archivo para lectura únicamente
  39.   cdsEan.DisableControls; // Evita la actualización por cada inserción deshabilitando los controles ligados al dataset.
  40.   while not Eof(F) do // Mientras que existan líneas en el archivo de texto o sea no sea el fin del archivo
  41.   begin
  42.     readln(F, L); // Lee una línea del archivo de texto teniendo en cuenta el CR (Carriage Return, Regreso de carril)
  43.     J:= 1;
  44.     Fillchar(AP, SizeOf(AP), ''); // en vez de: for I := 1 to 4 do AP[I]:= '';
  45.     for I := 1 to Length(L) do // Desde el primer elemento de la línea, separa a los elementos usando las comas
  46.       if L[I]<>','
  47.         then AP[J]:= AP[J] + L[I]
  48.         else Inc(J);
  49.     cdsEan.Insert; // Agrega una fila a la tabla con los campos según su orden, de uno a cuatro usando el arreglo
  50.     cdsEan.FieldByName('cfIni').AsInteger:= StrToInt(AP[1]);
  51.     if AP[2]<>''
  52.       then cdsEan.FieldByName('cfFin').AsInteger:= StrToInt(AP[2])
  53.       else cdsEan.FieldByName('cfFin').AsInteger:= StrToInt(AP[1]);
  54.     cdsEan.FieldByName('cfNomCodif').AsString:= AP[3];
  55.     cdsEan.FieldByName('cfOrigen').AsString:= AP[4];
  56.     cdsEan.Post;
  57.   end;
  58.   cdsEan.EnableControls; // Habilita los controles ligados al dataset para permitir ver el resultado
  59.   CloseFile(F);
  60.   cdsEan.SaveToFile('eancodes.cds', dfBinary); // Escribe en formato binario
  61.   cdsEan.SaveToFile('eancodes.xml', dfXML);    // Escribe en formato XML
  62. end;
  63.  
  64. end.



El CustomDataSet tiene esta definición de campos:
cfIni: Integer
cfFin: Integer
cfNomCodif: String
cfOrigen: String

No hay control de errores, etc. El archivo de texto debe estar en el directorio del ejecutable.

Espero que a alguien le sirva. Yo las pienso usar para suministrar información extra a los artículos.  (h)
Hay un error en Nederland, debería ser Paises Bajos (olvidé traducir).  :(

Saludos
(b) (b) (b)

Archivos adjuntos


  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 febrero 2015 - 02:31

Muchas gracias por el aporte amigo.  (y)  (y)

¿Para los que estamos del otro lado del charco podrías contarnos un poco más de esto?

saludos
  • 0

#3 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 14 febrero 2015 - 03:33

No hay mucho que explicar.
El tema es que pretendí darle más información a la organización al acceder a artículos. Dado que el dato está codificado en el EAN, ¿para qué volver a guardarlo?. Es decir si un 90% de los artículos posee un código EAN, será posible brindar información para este 90% usando una tabla. Bien la información será en este caso la procedencia.
Por otra parte, estoy realizando un procedimiento que separe las porciones de los códigosm las interprete y luego decida que camino tomar y si es posible actuar automáticamente o si se debe solicitar algún valor extra como en el caso de los artículos que se venden fraccionados.

Por lo único que subí los archivos es para que, en caso de que alguien se proponga hacer los mismo o algo parecido, pueda recurrir a la tabla ya generada. Es algo práctico
El código lo subí porque siempre se puede sacar algo de ellos. Por más simple que parezcan.

Estuve buscando un catálogo de artículos codificados para mi país y no lo encuentro... quizás esté pidiendo mucho. Pero supongo que en algún lugar habrá un atajo.  ;)

Saludos
(b)
  • 0

#4 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 14 febrero 2015 - 04:18

no entiendo la utilidad de esto.
¿cual seria su finalidad?  *-)
  • 0

#5 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 14 febrero 2015 - 06:13

No importa Nikolas. Si nadie le encuentra utilidad.
Pasa que estoy en algo bastante loco con los códigos y ese era un subproducto de mi trabajo y supuse que podría ahorrarle tiempo a algún marciano como Yo.  :D :D :D

Saludos
(b) (b)
  • 0

#6 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 febrero 2015 - 08:59

Pasa que estoy en algo bastante loco con los códigos y ese era un subproducto de mi trabajo y supuse que podría ahorrarle tiempo a algún marciano como Yo.  :D :D :D


(y) (y) (y) (y) (y)
  • 0

#7 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 14 febrero 2015 - 09:23

No importa Nikolas. Si nadie le encuentra utilidad.
Pasa que estoy en algo bastante loco con los códigos y ese era un subproducto de mi trabajo y supuse que podría ahorrarle tiempo a algún marciano como Yo.  :D :D :D

Saludos
(b) (b)


ah! entonces  (b)
  • 0




IP.Board spam blocked by CleanTalk.