Page 1 of 1

Cómo conocer el siguiente folio?

Posted: Wed Feb 26, 2020 10:49 pm
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

Re: Cómo conocer el siguiente folio?

Posted: Thu Feb 27, 2020 12:06 pm
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

Re: Cómo conocer el siguiente folio?

Posted: Thu Feb 27, 2020 12:13 pm
by horacio
También podría ser:

Code: Select all

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

Re: Cómo conocer el siguiente folio?

Posted: Thu Feb 27, 2020 12:33 pm
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
 

Re: Cómo conocer el siguiente folio?

Posted: Thu Feb 27, 2020 2:18 pm
by Armando
Muchachos:

Muchas gracias por sus aportes, pruebo y aviso.

Saludos

Re: Cómo conocer el siguiente folio?

Posted: Thu Feb 27, 2020 2:48 pm
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

Re: Cómo conocer el siguiente folio?

Posted: Thu Feb 27, 2020 10:29 pm
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

Re: Cómo conocer el siguiente folio?

Posted: Thu Feb 27, 2020 10:50 pm
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

Re: Cómo conocer el siguiente folio?

Posted: Fri Feb 28, 2020 12:30 pm
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

Re: Cómo conocer el siguiente folio?

Posted: Fri Feb 28, 2020 5:12 pm
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