Cómo conocer el siguiente folio?

Post Reply
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Cómo conocer el siguiente folio?

Post by Armando »

Hola foreros:

Tengo una tabla con MySQL que tiene un campo AUTO_INCREMENTAL, la pregunta es
cómo puedo saber cual es el siguiente número que hay en ese campo AUTO_INCREMENTAL?

Tengo una solución que abre el SCHEMA y funciona bien, la única pega es que se demora
varios segundos, diría yo más de lo necesario.

Alguna idea?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: Cómo conocer el siguiente folio?

Post by armando.lagunas »

Hola Armando

yo lo usaba asi:

Code: Select all

nHis :=  oSql:QueryData("SELECT COUNT(*) FROM TablaHistorial")
cHis := TRANSFORM(VAL(nHis)+1,"99999999")
fue lo único que encontré para determinar cual era el siguiente incremental de es tabla, si hay otra opción mejor, favor que la publique.

saludos
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Cómo conocer el siguiente folio?

Post by horacio »

También podría ser:

Code: Select all

nUltimo := oCn : QueryResult( "select max( id ) from mitabla" )
nUltimo++
 
Saludos
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Cómo conocer el siguiente folio?

Post by leandro »

Otra forma

Code: Select all

oVar:=  "SHOW TABLE STATUS LIKE 'tutabla';"
oRs := FW_OPENRECORDSET(oCnx,oVar,adLockOptimistic,adOpenKeyset) 
nRegistros := oRs:RecordCount()
If nRegistros#0
    nSiguiente := oRs:Fields( "Auto_increment" ):Value
Endif
 
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Cómo conocer el siguiente folio?

Post by Armando »

Muchachos:

Muchas gracias por sus aportes, pruebo y aviso.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Cómo conocer el siguiente folio?

Post by Armando »

Muchachos:

Antes que nada muchas gracias por sus aportes, aquí los resultados:

La sugerencia de mi Tocayo Lagunas, la función COUNT(*) nos deja el
número de registros que hay en la tabla, no considera los eliminados,
por ejemplo el AUTO_INCREMENTAL indica 43, COUNT(*) nos indica
41, físicamente hay 42 uno lo elimine, por eso quedan 42.

La sugerencia de Horácio MAX(ID), con los mismo datos del ejemplo
anterior, nos muestra el ID máximo que hay en la tabla 42, pero si
eliminamos el último registro añadido, el 42, MAX(ID) muestra 41.

La sugerencia de Leandro (Me doy cuenta que te has aplicado bien),
aunque hay registros eliminados sean los que sean me muestra 43
que es el número correcto.

Saludos foreros y gracias nuevamente por sus aportes
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Cómo conocer el siguiente folio?

Post by carlos vargas »

yo tengo este procedure en my db de mysql tavez tu pueda servir algo.

Code: Select all

CREATE DEFINER=`secure`@`%` TRIGGER `InsertInspection` BEFORE INSERT ON `inspection` FOR EACH ROW BEGIN
    set @auto_id := ( SELECT AUTO_INCREMENT 
                     FROM INFORMATION_SCHEMA.TABLES
                     WHERE TABLE_NAME='inspection'
                     AND TABLE_SCHEMA=DATABASE() ); 
    set new.id_inspection = @auto_id;
END
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Cómo conocer el siguiente folio?

Post by Armando »

Carlos:

Muchas gracias por el aporte, lo tengo como sugieres y funciona de 100, el problema
es que es lento, varios segundos más de lo necesario, pero el tiempo suficiente para
que el usuario desespere y empiece a oprimir teclas a diestra y siniestra pensando
que el computador se "atoro".

Code: Select all

        oRsJes:Source               := "SELECT " +;
                                                "AUTO_INCREMENT " +;
                                            "FROM " +;
                                                "INFORMATION_SCHEMA.TABLES " +;
                                            "WHERE " +;
                                                "TABLE_SCHEMA = 'SiaJaem' " +;
                                            "AND " +;
                                                "TABLE_NAME = 'Viajes'"
 
Con la sugerencia de Leandro problema superado.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
jbrita
Posts: 425
Joined: Mon Jan 16, 2006 3:42 pm

Re: Cómo conocer el siguiente folio?

Post by jbrita »

Armando. como estas, prueba esto

aCampos:={ 'cod_interno'ion'' }
aValues:={ CodControl }
xServer:Insert("ventadiaria", aCampos, aValues )

oQryId := xServer:Query( "SELECT last_insert_id() AS nId")
nReserva := oQryId:nId

saludos
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Cómo conocer el siguiente folio?

Post by Armando »

Hola José:

Saludos al crío, también es una buena solución, aunque con la sugerencia
de Leandro solucione el problema.

Muchas gracias, Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply