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