Cómo conocer el siguiente folio?

Cómo conocer el siguiente folio?

Postby Armando » Wed Feb 26, 2020 10:49 pm

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
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cómo conocer el siguiente folio?

Postby armando.lagunas » Thu Feb 27, 2020 12:06 pm

Hola Armando

yo lo usaba asi:

Code: Select all  Expand view  RUN
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
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Cómo conocer el siguiente folio?

Postby horacio » Thu Feb 27, 2020 12:13 pm

También podría ser:

Code: Select all  Expand view  RUN

nUltimo := oCn : QueryResult( "select max( id ) from mitabla" )
nUltimo++
 


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

Re: Cómo conocer el siguiente folio?

Postby leandro » Thu Feb 27, 2020 12:33 pm

Otra forma

Code: Select all  Expand view  RUN

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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Cómo conocer el siguiente folio?

Postby Armando » Thu Feb 27, 2020 2:18 pm

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: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cómo conocer el siguiente folio?

Postby Armando » Thu Feb 27, 2020 2:48 pm

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
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cómo conocer el siguiente folio?

Postby carlos vargas » Thu Feb 27, 2020 10:29 pm

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

Code: Select all  Expand view  RUN
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
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Cómo conocer el siguiente folio?

Postby Armando » Thu Feb 27, 2020 10:50 pm

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  Expand view  RUN

        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
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Cómo conocer el siguiente folio?

Postby jbrita » Fri Feb 28, 2020 12:30 pm

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
jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm

Re: Cómo conocer el siguiente folio?

Postby Armando » Fri Feb 28, 2020 5:12 pm

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
User avatar
Armando
 
Posts: 3231
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 87 guests