Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cómo volver los registros a cero de una tabla con autoincremento como campo clave? (https://www.clubdelphi.com/foros/showthread.php?t=63655)

cesar_gta86 25-02-2009 01:30:10

Cómo volver los registros a cero de una tabla con autoincremento como campo clave?
 
Hola que tal amigos, lo que pasa es que necesito volver los registros a cero, tengo una tabla con el campo clave autoincrementable. Ya he tratado de utilizar una función que hace tiempo me proporcionaron, pero ahora que la quiero utilizar me manda un mensaje de que la tabla que quiero volver los registros a cero, no la puede abrir, y según yo le doy la ruta correcta.

Evento:
Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
direccion:string;
begin
Table3.Active:=true;
Table3.First; //préstamos
if Table3.FieldByName('No_prestamo').AsString<>'' then
begin
Table3.Active:=false;
//direccion:= ExtractFilePath(ParamStr(0)); ejecutable cuando ya tenga el programa en ejecutable
direccion:='C:\Documents and Settings\César Alberto\Escritorio\Sistema Control_documentos bueno\Control_documentos\B.D\prestamos.db';
// direccion:=direccion+'Carreras.db'; ejecutable
SetAutoInc(direccion,0);
MessageDlg('Han sido eliminados todos los registros de los préstamos...', mtInformation, [mbok],0);
close;
end;
end;




Función:

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;




Ha, y primero no me marcaba error, y si regresaba el contador de registros a cero, pero no los eliminaba.

Saludos y grácias de antemano.

marcoszorrilla 25-02-2009 06:54:08

Está funcion la utilizo yo mismo para volver el contador a 0 en Tablas Paradox. Su comportamiento siempre ha sido correcto, requiere que en el momento de su uso la tabla esté cerrada, ya que se accede a bajo nivel a la misma.

Por otra parte para eliminar todos los registros requiere uso exclusivo y la función.

Código Delphi [-]
MiTabla.EmptyTable;

Por lo tanto la secuencia sería.

1.- Poner la tabla en uso exclusivo.
2.- Vaciar la tabla.
3.- Cerrar la tabla
4.- Ejecutar el cambio del autoincremento.

Otra cosa es que la tabla tenga algún error y no funcione correctamente.

Otra posibilidad para tablas temporales, crearlas mediante código en una carpeta del PC en donde esté ejecutándose la aplicación en ese momento.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 01:27:40.

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