Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   empezar en 1 luego de un pack (https://www.clubdelphi.com/foros/showthread.php?t=55841)

dtomeysoto 28-04-2008 21:53:33

empezar en 1 luego de un pack
 
Amigos del Club, tengo una tabla paradox que tiene un campo autoincrement, esta tabla que tuvo datos en un momento determinado y que de vez en cuando le hago un pack quisiera de alguna forma que el campo autoincrement me cominece en 1, hay forma posible???

marcoszorrilla 28-04-2008 22:04:07

Yo utilizo está función y me va de perlas:

Código Delphi [-]
Procedure SetAutoInc(filename : string; Value : Longint);
var
mystream : tfilestream;
begin
mystream := tfilestream.create(filename,
            fmOpenWrite + fmShareExclusive);
  try
    mystream.Seek(73, soFromBeginning);
    mystream.Writebuffer(Value, SizeOf(Value));
  finally
    mystream.Free;
  end;
end;

Ejemplo de llamada:
Código Delphi [-]
('\\Facturacion\facturas\AniPdx\LinFacturas.db',0);

Con esta instrucción el próximo registro tendrá el número 1.

Un Saludo.

dtomeysoto 28-04-2008 22:16:24

gracias amigo por tu pronta respuesta, luego de escribir este post encontré en la web el siguiente código muy parecido al tuyo.


Código Delphi [-]
 
function ResetAutoInc(FileName: TFileName; NewValue:Longint): Boolean;
begin
with TFileStream.Create(FileName, fmOpenReadWrite) do
try
Result := (Seek($49, soFromBeginning) = $49) and (Write(NewValue, 4) = 4);
finally
Free;
end;
end;

dtomeysoto 29-04-2008 13:24:56

Cita:

Empezado por marcoszorrilla (Mensaje 283078)
Yo utilizo está función y me va de perlas...

Amigo, luego de revisar tu codigo más el que encontré en la web noto que ambos hacen lo mismo de una forma muy parecida, pero lo que no logro entender es en si el porqué se escribe en la posición 73 de la tabla, imagino que tiene que ver con la estructura de una tabla paradox.

marcoszorrilla 29-04-2008 15:17:03

Símplemente porque en esa posición se guarda el número por el que va el autoincremento.

Lógicamente hay que tener mucho cuidado si se cambia este número en una tabla con registros, cuando el número llegara a repetirse a la vez borraría el registro antiguo con dicho número.

Un Saludo.

dtomeysoto 29-04-2008 15:43:46

Cita:

Empezado por marcoszorrilla (Mensaje 283223)
Símplemente porque en esa posición se guarda el número por el que va el autoincremento.

Lógicamente hay que tener mucho cuidado si se cambia este número en una tabla con registros, cuando el número llegara a repetirse a la vez borraría el registro antiguo con dicho número.

Un Saludo.

ok, gracias amigo por tu colaboración.


La franja horaria es GMT +2. Ahora son las 03:13:32.

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