PDA

Ver la Versión Completa : Generar Còdigos automaticamente


megaredoxk
05-12-2007, 14:26:16
un saludo muy especial compañeros del club delphi.
tengo un problemita y espero su grata ayuda.utilizo delphi6 y paradox7

tengo una tabla de inventario, Codigo/Producto/Cantidad/Costo/Valor, en la cual voy digitando los productos que tengo para la venta,lo que quiero es que el codigo se genere automaticamente, ya diseñé otra tabla llamada consecutivo donde tengo el campo Codigo_Inv el cual va almacenando el codigo anterior y lo incrementa en uno, este consejo lo leí de un foro que encontré
pero no se realizar el código fuente??????
es mejor tener otra tabla para generar el consecutivo de codigo?????

ya estube observando en otros foros pero no encuentro la respuesta.

de antemano les agradezco mucho

eduarcol
05-12-2007, 14:36:46
yo utilizo una funcion para leer el correlativo cada vez que lo necesito, es esta

function TobRutinas.LeerCorrelativo(Campo, Accion: String; T: tTable;): String;
Var
nReintento: Integer;
Reg: TRegistry;
cOR: String;
begin
//Toma la ruta real de lo datos
nReintento := 1;
//Lee el correlativo correspondiente al campo indicado
if not T.Active then T.Active := True;
T.First;
Result := T.FieldByName(Campo).AsString;
T.Edit;
if Accion = 'I' then T.FieldByName(Campo).AsInteger := T.FieldByName(Campo).AsInteger + 1
else if Accion = 'D' then T.FieldByName(Campo).AsInteger := T.FieldByName(Campo).AsInteger - 1;
T.Post;
end;

tiene unas modificaciones de la original, la cual para poder utilizar debes tener la libreria, BDEUtil (http://eduarcol.clubdelphi.com/Componentes/BDEUtil.pas), he aqui la original

function TobRutinas.LeerCorrelativo(Campo, Accion: String): String;
Var
T: tTable;
nReintento: Integer;
begin
//Toma la ruta real de lo datos
T := tTable.Create(Application);
try
nReintento := 1;
if AbrirTablas(T, cCorrelativo, cCorrelativo_I1) then
begin
//Lee el correlativo correspondiente al campo indicado
Result := StrtoZero(T.FieldByName(Campo).AsString, 12);
EditarRegistro(T);
if Accion = 'I' then T.FieldByName(Campo).AsInteger := T.FieldByName(Campo).AsInteger + 1
else if Accion = 'D' then T.FieldByName(Campo).AsInteger := T.FieldByName(Campo).AsInteger - 1;
While nReintento < 10 do
begin
if GrabarsinMensaje(T) then nReintento := 10
else nReintento := nReintento + 1;
end;
end;
finally
FreeandNil(T);
end;
end;

megaredoxk
05-12-2007, 15:50:32
Eduarcol gracias por ayudarme, pero serà que me puedes explicar un poco ya que soy novato:confused: lo que me alcanzo ha imaginar es que al momento de dar clic en el boton nuevo en la tabla me genere el còdigo del nuevo producto a ingresar, tu utilizas nuevas variables y me das a entender otro trozo de còdigo que lo estipulas como original.

muchas gracias Eduarcol por tu pronta respuesta

eduarcol
05-12-2007, 15:58:20
vamos a dejarlo sencillo, utiliza el "Primer trozo de codigo".

Colocalo donde lo necesites, y el click del boton:

MiCorrelativo := LeerCorrelativo('elcampo', 'I', tbCorrelativo);

Donde:

elcampo= El campo que tienes en la tabla de correlativo
tbCorrelativo= La tabla que guarda los correlativos(EL dataset que lo conecta)