PDA

Ver la Versión Completa : Inicializar el tipo de dato autoincrement


ledesma78
11-11-2007, 18:25:54
: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.


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\
SetAutoInc('C:\Alfa\Datos\LinAlbar.db',0);

Un Saludo.

ledesma78
11-11-2007, 23:22:34
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
: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
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, la tabla estaba activada, ya la desactive y funciona a la perfeccion, muchas gracias, por ayudarme:)