Cómo puedo reinicializar un Campo Autoincremental?

23/06/2004 - 17:16 por Gerardo Mejicano | Informe spam
Buenos días grupo.

Existe un comando o instrucción para reinicializar un campo
autoincremental?, he terminado de hacer pruebas y tengo que instalar el
sistema, necesito dejar la tablas vacías y que el campo de autoincremento
empiece nuevamente desde uno.

Lo que he realizado, es que convierto el campo a entero salvo la tabla y
luego entro nuevamente y lo pongo como campo autoinc, eso hace que empiece
nuevamente desde 1, pero quiero saber si existe alguna instrucción que haga
lo mismo.

Gracias de antemano,

Saludos,

Gerardo Mejicano

Preguntas similare

Leer las respuestas

#1 Gerardo Mejicano
23/06/2004 - 18:29 | Informe spam
Gracias, ya lo resolví, no había puesto atención en el diseñador de tablas,
allí esta un campo que maneja el correlativo en que esta actualmente y a
cuanto se desea incrementar el mismo.

Saludos,

Gerardo Mejicano


"Gerardo Mejicano" escribió en el mensaje
news:
Buenos días grupo.

Existe un comando o instrucción para reinicializar un campo
autoincremental?, he terminado de hacer pruebas y tengo que instalar el
sistema, necesito dejar la tablas vacías y que el campo de autoincremento
empiece nuevamente desde uno.

Lo que he realizado, es que convierto el campo a entero salvo la tabla y
luego entro nuevamente y lo pongo como campo autoinc, eso hace que empiece
nuevamente desde 1, pero quiero saber si existe alguna instrucción que


haga
lo mismo.

Gracias de antemano,

Saludos,

Gerardo Mejicano


Respuesta Responder a este mensaje
#2 Esparta Palma
24/06/2004 - 19:06 | Informe spam
En efecto, con eso puedes... pero sólo te servirá en el IDE, si deseas
hacerlo programáticamente, entonces deberás utilizar el comando ALTER
TABLE ...

Esto lo postee hace algunos días...


****************************************************
* Procedure: ResetTables
* Author: Esparta Palma Date: 17/Mayo/2004
* Purpose: Reinicia los contadores de AutoIncrementales en un cursor
****************************************************
PROCEDURE ResetTables
LPARAMETERS tcCursor
LOCAL llError
llError = .F.
IF VARTYPE(tcCursor)="C" AND NOT EMPTY(tcCursor)
IF NOT USED(tcCursor)
TRY
USE (tcCursor) IN 0 EXCLUSIVE
CATCH TO loErrorUsing
llError = .T.
DO CASE
CASE loErrorUsing.ErrorNo = 1
lnReturnValue = -2 && The Table doesn't exists
CASE loErrorUsing.ErrorNo = 1705
lnReturnValue = -3 && Acess denied, used by another
user
OTHERWISE
lnReturnValue = -4 &&Unknow Error
ENDCASE
ENDTRY
IF llError
RETURN lnReturnValue
ENDIF
ELSE
IF NOT ISEXCLUSIVE(tcCursor)
RETURN -5 && Used by this user, but not Exclusive
ENDIF
ENDIF
llError = .F.
lnChangedFields = 0
FOR lnFields=1 TO AFIELDS(laFields,tcCursor)
IF laFields[lnFields,18] # 0 &&This Field has AutoInc
TRY
ALTER TABLE (tcCursor) ALTER COLUMN (laFields[lnFields,1]);
INT AUTOINC NEXTVALUE 1 STEP (laFields[lnFields,18])
lnChangedFields = lnChangedFields + 1
CATCH TO loError
llError = .T.
?[ Error: ] + STR(loError.ErrorNo)
?[ Message: ] + loError.MESSAGE
lnReturnValue = -6 &&Error Altering the Table
ENDTRY
IF llError
RETURN lnReturnValue
ENDIF
ENDIF
ENDFOR
ELSE
RETURN -1 && Wrong parameters...
ENDIF
RETURN lnChangedFields

ENDPROC

El procedimiento anterior, lo que hace es utilizar la tabla que hemos
pasado de parametro(si es que no está en uso), si tiene algún error,
devolverá un valor menor que cero ( < 0) , si cambia algún campo que tuvo
incremental devolverá un número mayor que cero ( > 0) , si no cambia
nada, devolverá cero... Hay que recordar que puede haber "n" campos
autoincrementales un un cursor, y cada uno de esos campos, puede tener un
valor distinto en su STEP...
Espero te sirva.

Gracias, ya lo resolví, no había puesto atención en el diseñador de tablas,
allí esta un campo que maneja el correlativo en que esta actualmente y a
cuanto se desea incrementar el mismo.

Saludos,

Gerardo Mejicano




"Gerardo Mejicano" escribió en el mensaje
news:
Buenos días grupo.

Existe un comando o instrucción para reinicializar un campo
autoincremental?, he terminado de hacer pruebas y tengo que instalar el
sistema, necesito dejar la tablas vacías y que el campo de autoincremento
empiece nuevamente desde uno.

Lo que he realizado, es que convierto el campo a entero salvo la tabla y
luego entro nuevamente y lo pongo como campo autoinc, eso hace que empiece
nuevamente desde 1, pero quiero saber si existe alguna instrucción que


haga
lo mismo.

Gracias de antemano,

Saludos,

Gerardo Mejicano



ž,ø€º°`°º€ø,žž,ø€º°`°º€ø,žž,ø€º°`°º€ø,žž,ø€º°`°º
Espartaco Palma Martínez
SysOp PortalFox.com
email:mexicoSINSPAM[Arroba]portalfox.com

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#3 Gerardo Mejicano
24/06/2004 - 21:54 | Informe spam
Gracias Esparta por todo esta ayuda.

Saludos y éxitos

"Esparta Palma" escribió en el
mensaje news:%
En efecto, con eso puedes... pero sólo te servirá en el IDE, si deseas
hacerlo programáticamente, entonces deberás utilizar el comando ALTER
TABLE ...

Esto lo postee hace algunos días...


****************************************************
* Procedure: ResetTables
* Author: Esparta Palma Date: 17/Mayo/2004
* Purpose: Reinicia los contadores de AutoIncrementales en un cursor
****************************************************
PROCEDURE ResetTables
LPARAMETERS tcCursor
LOCAL llError
llError = .F.
IF VARTYPE(tcCursor)="C" AND NOT EMPTY(tcCursor)
IF NOT USED(tcCursor)
TRY
USE (tcCursor) IN 0 EXCLUSIVE
CATCH TO loErrorUsing
llError = .T.
DO CASE
CASE loErrorUsing.ErrorNo = 1
lnReturnValue = -2 && The Table doesn't exists
CASE loErrorUsing.ErrorNo = 1705
lnReturnValue = -3 && Acess denied, used by another
user
OTHERWISE
lnReturnValue = -4 &&Unknow Error
ENDCASE
ENDTRY
IF llError
RETURN lnReturnValue
ENDIF
ELSE
IF NOT ISEXCLUSIVE(tcCursor)
RETURN -5 && Used by this user, but not Exclusive
ENDIF
ENDIF
llError = .F.
lnChangedFields = 0
FOR lnFields=1 TO AFIELDS(laFields,tcCursor)
IF laFields[lnFields,18] # 0 &&This Field has AutoInc
TRY
ALTER TABLE (tcCursor) ALTER COLUMN (laFields[lnFields,1]);
INT AUTOINC NEXTVALUE 1 STEP (laFields[lnFields,18])
lnChangedFields = lnChangedFields + 1
CATCH TO loError
llError = .T.
?[ Error: ] + STR(loError.ErrorNo)
?[ Message: ] + loError.MESSAGE
lnReturnValue = -6 &&Error Altering the Table
ENDTRY
IF llError
RETURN lnReturnValue
ENDIF
ENDIF
ENDFOR
ELSE
RETURN -1 && Wrong parameters...
ENDIF
RETURN lnChangedFields

ENDPROC

El procedimiento anterior, lo que hace es utilizar la tabla que hemos
pasado de parametro(si es que no está en uso), si tiene algún error,
devolverá un valor menor que cero ( < 0) , si cambia algún campo que tuvo
incremental devolverá un número mayor que cero ( > 0) , si no cambia
nada, devolverá cero... Hay que recordar que puede haber "n" campos
autoincrementales un un cursor, y cada uno de esos campos, puede tener un
valor distinto en su STEP...
Espero te sirva.

>Gracias, ya lo resolví, no había puesto atención en el diseñador de


tablas,
>allí esta un campo que maneja el correlativo en que esta actualmente y a
>cuanto se desea incrementar el mismo.

>Saludos,

>Gerardo Mejicano


"Gerardo Mejicano" escribió en el mensaje
news:
> Buenos días grupo.
>
> Existe un comando o instrucción para reinicializar un campo
> autoincremental?, he terminado de hacer pruebas y tengo que instalar el
> sistema, necesito dejar la tablas vacías y que el campo de


autoincremento
> empiece nuevamente desde uno.
>
> Lo que he realizado, es que convierto el campo a entero salvo la tabla y
> luego entro nuevamente y lo pongo como campo autoinc, eso hace que


empiece
> nuevamente desde 1, pero quiero saber si existe alguna instrucción que
haga
> lo mismo.
>
> Gracias de antemano,
>
> Saludos,
>
> Gerardo Mejicano

¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º
Espartaco Palma Martínez
SysOp PortalFox.com
email:mexicoSINSPAM[Arroba]portalfox.com


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#4 Esparta Palma
25/06/2004 - 18:44 | Informe spam
De nada, el código estará próximamente en PortalFox.com, para sus futuras
referencias...

Gracias Esparta por todo esta ayuda.

Saludos y éxitos



"Esparta Palma" escribió en el
mensaje news:%
En efecto, con eso puedes... pero sólo te servirá en el IDE, si deseas
hacerlo programáticamente, entonces deberás utilizar el comando ALTER
TABLE ...

Esto lo postee hace algunos días...


****************************************************
* Procedure: ResetTables
* Author: Esparta Palma Date: 17/Mayo/2004
* Purpose: Reinicia los contadores de AutoIncrementales en un cursor
****************************************************
PROCEDURE ResetTables
LPARAMETERS tcCursor
LOCAL llError
llError = .F.
IF VARTYPE(tcCursor)="C" AND NOT EMPTY(tcCursor)
IF NOT USED(tcCursor)
TRY
USE (tcCursor) IN 0 EXCLUSIVE
CATCH TO loErrorUsing
llError = .T.
DO CASE
CASE loErrorUsing.ErrorNo = 1
lnReturnValue = -2 && The Table doesn't exists
CASE loErrorUsing.ErrorNo = 1705
lnReturnValue = -3 && Acess denied, used by another
user
OTHERWISE
lnReturnValue = -4 &&Unknow Error
ENDCASE
ENDTRY
IF llError
RETURN lnReturnValue
ENDIF
ELSE
IF NOT ISEXCLUSIVE(tcCursor)
RETURN -5 && Used by this user, but not Exclusive
ENDIF
ENDIF
llError = .F.
lnChangedFields = 0
FOR lnFields=1 TO AFIELDS(laFields,tcCursor)
IF laFields[lnFields,18] # 0 &&This Field has AutoInc
TRY
ALTER TABLE (tcCursor) ALTER COLUMN (laFields[lnFields,1]);
INT AUTOINC NEXTVALUE 1 STEP (laFields[lnFields,18])
lnChangedFields = lnChangedFields + 1
CATCH TO loError
llError = .T.
?[ Error: ] + STR(loError.ErrorNo)
?[ Message: ] + loError.MESSAGE
lnReturnValue = -6 &&Error Altering the Table
ENDTRY
IF llError
RETURN lnReturnValue
ENDIF
ENDIF
ENDFOR
ELSE
RETURN -1 && Wrong parameters...
ENDIF
RETURN lnChangedFields

ENDPROC

El procedimiento anterior, lo que hace es utilizar la tabla que hemos
pasado de parametro(si es que no está en uso), si tiene algún error,
devolverá un valor menor que cero ( < 0) , si cambia algún campo que tuvo
incremental devolverá un número mayor que cero ( > 0) , si no cambia
nada, devolverá cero... Hay que recordar que puede haber "n" campos
autoincrementales un un cursor, y cada uno de esos campos, puede tener un
valor distinto en su STEP...
Espero te sirva.

>Gracias, ya lo resolví, no había puesto atención en el diseñador de


tablas,
>allí esta un campo que maneja el correlativo en que esta actualmente y a
>cuanto se desea incrementar el mismo.

>Saludos,

>Gerardo Mejicano


"Gerardo Mejicano" escribió en el mensaje
news:
> Buenos días grupo.
>
> Existe un comando o instrucción para reinicializar un campo
> autoincremental?, he terminado de hacer pruebas y tengo que instalar el
> sistema, necesito dejar la tablas vacías y que el campo de


autoincremento
> empiece nuevamente desde uno.
>
> Lo que he realizado, es que convierto el campo a entero salvo la tabla y
> luego entro nuevamente y lo pongo como campo autoinc, eso hace que


empiece
> nuevamente desde 1, pero quiero saber si existe alguna instrucción que
haga
> lo mismo.
>
> Gracias de antemano,
>
> Saludos,
>
> Gerardo Mejicano



ž,ø€º°`°º€ø,žž,ø€º°`°º€ø,žž,ø€º°`°º€ø,žž,ø€º°`°º
Espartaco Palma Martínez
SysOp PortalFox.com
email:mexicoSINSPAM[Arroba]portalfox.com


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida