Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Generar Còdigos automaticamente (https://www.clubdelphi.com/foros/showthread.php?t=51078)

megaredoxk 05-12-2007 14:26:16

Generar Còdigos automaticamente
 
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

Código Delphi [-]
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, he aqui la original

Código Delphi [-]
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

me puedes explicar un poco
 
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:

Código Delphi [-]
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)


La franja horaria es GMT +2. Ahora son las 13:44:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi