Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Inicializar el tipo de dato autoincrement (https://www.clubdelphi.com/foros/showthread.php?t=50203)

ledesma78 11-11-2007 18:25:54

Inicializar el tipo de dato autoincrement
 
:rolleyes:Hola, disculpen otra vez yo. Quiero preguntarles, si se puede inicializar el tipo de dato autoincrement de las tapblas PARADOX y como hacerlo?, gracias

marcoszorrilla 11-11-2007 21:53:58

Sí, se puede, el problema es que si ya tienes números y lo reinicias, te ira "pisando" todos los registros que contenga la tabla cuyos números coincidan.

Por ejemplo, tenemos registros numerados del 1 al 500
Reiniciamos la Tabla a 0. Cuando grabemos el primer registro con la nueva numeración nos eliminará el 1..2 etc.

Yo la renumeración la utilizo para tablas en las que por algún motivo se eliminan todos los registros.

Utilizo este Procedimiento que cree a propósito.

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 para poner el Autoincremento a 0 de la Tabla LinAlbar.Db que se encontraría en la dirección c:\Alfa\Datos\
Código Delphi [-]
SetAutoInc('C:\Alfa\Datos\LinAlbar.db',0);

Un Saludo.

ledesma78 11-11-2007 23:22:34

Si, ese es el objetivo
 
Si, para eso loquiero. Esque en ocaciones tengo que limpiar toda mi tabla y necesito que empiece nuvamente del 1 el autoincrement, pero no entendi muy bien, ese codigo que me diste (el primero), para que es y donde lo pongo, y tabien el segundo, gracias nuevamente por ayudarme:rolleyes:

marcoszorrilla 12-11-2007 06:56:13

Lo primero, es el procedimiento que hace lo que tu quieres.
El segundo es un ejemplo de como usarlo.

La llamda es: Camino y nombre de la tabla y un número que indica por donde empieza el autoincremento, al poner 0 el primer registro tendrá el número uno.


Un Saludo.

ledesma78 12-11-2007 17:23:25

Me aparece un error
 
1 Archivos Adjunto(s)
:oHOLA UNA VEZ MAS, YA COLOQUE EL CODIGO QUE ME DIJISTE Y LO MANDE LLAMAR TABIEN, PERO ME APARECE UN ERROR:(, AHI PUEDES VERLO EN EL ARCHIVO ADJUNTO OJALA ME PUEDAS AYUDAR, GRACIAS.


PD. REQUIERE ALGUNA LIBRERIA?

ledesma78 12-11-2007 17:27:21

Haber Si Me Explico Mejor
 
CUANDO LLAMO EL MODULO TODO ESTA BIEN, PERO CUANDO ENTRA AL PROCEDIMIENTO, EN ESTA LINEA
mystream := tfilestream.create(filename,fmOpenWrite + fmShareExclusive);

EL PROGRAMA TRUENA Y ME DIE ESTO:

Error CANNOT OPEN FILE C:\DOCUMENTS AND SETTINGS\ULISES\MY DOCUMENTS\DOCUMENTOS\VII\PAPELERIA\TABLAS\VENTAS.DB

SIENDO MI LLAMADA LA SIGUIENTE:

SetAutoInc('C:\Documents and Settings\Ulises\My Documents\Ulises\Documentos\VII\PAPELERIA\TABLAS\ventas.db',0);

AHORA, PARECE QUE EL ARCHIVO(TABLA) NO LO PUEDE HABRIR, PERO PUES NO SE PORQUE, ALGUNA IDEA?

Lepe 12-11-2007 19:02:02

no tendrás la tabla abierta (active a true) cuando ejecutas ese código no??? Ten en cuenta que quieres abrirla de forma exclusiva (fmShareExclusive).

Saludos

marcoszorrilla 12-11-2007 21:09:50

Me inclino por lo que dice Lepe, aunque también puede ser que la dirección o el nombre de la tabla tengan un ligero error.

Supongo que la dirección la has copiado y pegado para evitar errores?

Un Saludo.

ledesma78 13-11-2007 16:09:39

Si, asi es
 
Si, la tabla estaba activada, ya la desactive y funciona a la perfeccion, muchas gracias, por ayudarme:)


La franja horaria es GMT +2. Ahora son las 06:54:37.

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