Saber el último ID generado de una tabla

436 views
Skip to first unread message

Alfredo García

unread,
Aug 26, 2012, 11:06:49 PM8/26/12
to de-fox-...@googlegroups.com
Al crear un nuevo registro en un tabla, cómo se cual es el último ID generado?

Si lo hago con HAdd()

o si creo un nuevo registro por medio de un SQL: HExecuteSQLQuery(dsConsulta,"INSERT INTO Proveedores (nombre) VALUES ('PROVEEDOR 1')"

Gracias

Daniel Santiago Rodríguez Begambre

unread,
Aug 28, 2012, 8:37:08 PM8/28/12
to de-fox-...@googlegroups.com
Hola
 
Si tú Fichero tiene un ID automático puedes recuperarlo después de hacer el hAdd, esta es la forma que más utilizo
 
IF hAdd(Proveedores) THEN
  Id = Proveedores.ProveedoresID  // Identificador automático
ENDIF
 
Si insertas el registro con HExecuteSQLQuery(dsConsulta,"INSERT INTO Proveedores (nombre) VALUES ('PROVEEDOR 1')" lo puedes recuperar de dos formas:
Con una consulta hExecuteSQLQuery(dsConsulta,"SELECT MAX(ProveedoresID) AS Id")
O con el comando hReadLast(Proveedores,ProveedoresID)
 
 
Atentamente,
 
Daniel

Alfredo García

unread,
Aug 28, 2012, 8:40:29 PM8/28/12
to de-fox-...@googlegroups.com
Gracias Daniel

Me parece mejor el comando  hReadLast(Proveedores,ProveedoresID)  para el caso de usar  HExecuteSQLQuery. Debe usar menos recurso el servidor, de esta manera, me parece.

Gracias.

     Alfredo García
Servicios Alferis, C.A.


Alfredo García

unread,
Aug 28, 2012, 8:42:19 PM8/28/12
to de-fox-...@googlegroups.com
¿Cómo cambio el valor del próximo ( next value ) de un campo ID autoincrementable en una tabla HFSQL?

¿Recomiendas esta BD?

según probé no es compatible para usarla en WinDev Mobile, o me equivoco...

Daniel Santiago Rodríguez Begambre

unread,
Aug 28, 2012, 9:55:18 PM8/28/12
to de-fox-...@googlegroups.com
Hola
 
Para cambiar el ID autoincremental puedes usar las opciones de hAdd: hSetIdAuto o hForceIdAuto (funcionan diferentes, mira la ayuda)
 
Yo la recomendaría cuando el cliente no dispone de otra mejor (SQL Server, Oracle) o cuando no es relevante para el cliente, la prefiero sobre MySQL, FireBird, xBase y similares
 
Aunque no lo he probado en Mobile he leido que si son compatibles, de hecho se pueden trabajar aplicaciones en WinDev Mobile con HF
 
Atentamente,
 
Daniel

Daniel Santiago Rodríguez Begambre

unread,
Aug 28, 2012, 10:04:52 PM8/28/12
to de-fox-...@googlegroups.com
Hola
 
A mi también me parece que es mejor con el comando hReadLast: creo que consume menos recurso, es un comando directo y es más fácil de usar
 
Atentamente,
 
Daniel

Alfonso Ramirez Diaz

unread,
Aug 28, 2012, 11:24:11 PM8/28/12
to de-fox-...@googlegroups.com
Estimados.

Si bien el Hreadlast() es bastante bueno no lo recomiendo porque recorre toda la tabla, en cambio un HExecuteSQLQuery() es mucho mas rapido lo he comprobado con tablas grandes y sobretodo si tienen campos image o blob.

Alfredo García

unread,
Aug 28, 2012, 11:25:33 PM8/28/12
to de-fox-...@googlegroups.com
Es bueno saberlo.
Buen detalle. 
 
 
 



--

Daniel Santiago Rodríguez Begambre

unread,
Aug 31, 2012, 2:31:04 PM8/31/12
to de-fox-...@googlegroups.com
Hola Alfonso
 
Por las pruebas que he hecho el hReadLast no recorre toda la tabla o si no se demoraria demasiado en tablas con muchos registros, lo que si hace el hReadLast es leer el contenido del registro una vez se ubica en el último registro, si tienes muchos campos en el registro o son muy grandes los campos va a demorarse para leer el registro, ahora si tienes campos memos o binarios extensos va tener una demora considerable, para evitar que lea los campos memos se debe utilizar el comando hSetMemo y así se evita leer los campos memos (image, blob)
 
Ahora si solo se desa conocer solo el id del ultimo registro estoy de acuerdo en usar el hExecuteSQLQuery, aunque para la pregunta incial de Alfredo al hacer un hAdd tiene en forma inmediata el Id automático
 
Si te es posible hacer la prueba desactivando los memo con hSetMemo y haciendo la consulta en la tabla que tienes grande comparando tiempos me comentas como va y te lo agradeceria
 
 
Gracias
 
 
Daniel
Reply all
Reply to author
Forward
0 new messages