Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-06-2011
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
Saber el id de mi ultimo registro insertado

Saludos a todos, espero q estes bien.

Solicito su ayu nuevamente.

D7 + MySql 5 + Zeos 6.6...

Necesito saber cual es el registro de mi ultimo registro ingresado:
Algo como esto

mi tabla recibo es algo asi:

id PK autoincrement e Integer
Nombre Varchar

mas campos.....
.....



Código Delphi [-]
ZQ.text:= 'INSERT INTO recibo ( cliente,..... )     VALUES  ( :PNombre,...)';
ZQ.parambyname('PNombre').asstring:='JOSE';
ZQ.Execsql;
zq....retur(id) (esto es lo que busco)

espero me haya explicado
y agradesco de antemano su ayuda
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #2  
Antiguo 01-06-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ejecuta esta consulta:

Código SQL [-]
select last_insert_id()

inmediatamente después de la inserción. Te devuelve un único registro con el valor deseado.

// Saludos
Responder Con Cita
  #3  
Antiguo 01-06-2011
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
ok

muchas gracias roman.
te agradesco mucho.


Puedo aprovechar este hilo para preguntar como manejo transacciones con zeos, la verdad es hace mucho q no programo y no lo recuerdo.

a ver si estoy bien:

Código Delphi [-]
try zconn.begintran
begin
......
end
catch
 zconn.rollback.

La verdad no se si estoy en lo correcto.
Pero muchas gracias por su ayuda
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #4  
Antiguo 01-06-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hace tiempo que no uso ZEOS, creo que no usé transacciones con él, pero supongo que es como lo pones, excepto que en lugar de catch es except .

// Saludos
Responder Con Cita
  #5  
Antiguo 02-06-2011
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
gracias

Gracias por la respuesta, y disculpas por la demora en le respuesta.

Bueno me referia a que hace mucho no uso zeos y la verdad no se si esta bien lo escrito, como que es un pequeño indicio sobre como lo usaba.


Gracias por todo
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #6  
Antiguo 13-06-2011
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Transacciones con zeos

Para el manejo de transacciones en zeos es algo asi:
ZeosConx.StartTransaction;
// insert/Update/delete
ZeosConx.Commit;

Error:
ZeosConx.Rollback;

Espero te sirva de algo, y no te olvides que para el uso de transacciones las tablas deben ser de tipo innodb y no myisam.
Saludos
Walter
Responder Con Cita
  #7  
Antiguo 13-06-2011
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
gracias

muchas gracias por su ayuda.
lo resolvi asi:
Código Delphi [-]
try
Zconn.startransaction; zquery.exec; zconn.commit;
except
zconn.rollback;
end;

Gracias a todos por su colaboracion
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #8  
Antiguo 13-06-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

Yo añadiría un detallito:

Código Delphi [-]
try
  Zconn.startransaction;
  zquery.exec;
  zconn.commit;
except
  zconn.rollback;
  raise; // <-- para que relanzar la excepción
end;

Si no lanzas la excepción, el usuario no se enterará de qué fue lo que pasó, simplemente estarás ocultando el error.

// Saludos
Responder Con Cita
  #9  
Antiguo 14-06-2011
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
EL apuro

Gracias Roman por la aclaraciòn.
Me confirman nuevamente que el apuro no es bueno, pror responder rapidamente uno se olvida de detallitos muy importantes.

Tienes toda la razon debemos informar al usuario de que ocurrio un error.

Gracias por todo
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #10  
Antiguo 04-07-2013
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Poder: 17
Panasys Va por buen camino
Pregunto, continuando el hilo, la solucion para saber el ultimo ID sirve para multiples usuarios accediendo a la tabla? Es decir a mi aplicacion la van a acceder 3 o 4 usuarios asi es que cuando hago el INSERT (tambien con ZEOS) y luego pido el ultimo ID es seguro que me traera el mio y no el de otro usuario?

Gracias y abrazo

Javier
Responder Con Cita
  #11  
Antiguo 04-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El último insertado. Sin importar quién haya sido.
Responder Con Cita
  #12  
Antiguo 20-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Buenas,

Dando una vuelta por los foros, queria comentar que, en relacion a las transacciones con zeos y, segun lo que comentais

Cita:
try
Zconn.startransaction;
zquery.exec;
zconn.commit;
except zconn.rollback;
raise; // <-- para que relanzar la excepción
end;
si tenemos el componente zconn.autocommit:=false;
el sistema te arroja que zconn.startrarnsaccion no esta permitido para non autocommit.

espero que sirva.

un saludo
Responder Con Cita
  #13  
Antiguo 20-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
ya aprovechando el post, con permiso de ustedes.

tengo un problema que no se por donde es el asunto por mas vueltas que le doy

si pongo

Código Delphi [-]
zquery1.sql.clear;
zquery1.sql.text:='select id_folio from compras';
zquery1.active:=true;

No tengo problemas.

pero si pongo

Código Delphi [-]
zquery1.sql.clear;
zquery1.sql.text:='select max(id_folio) from compras';
zquery1.active:=true;

para saber cual es el ultimo registro añadido, me dice que id_folio no existe.

Estoy usando zeos e id_folio es autoincrement.

si cambio id_folio por otro campo me sigue diciendo que no existe id_folio.

No lo entiendo la verdad.
Responder Con Cita
  #14  
Antiguo 20-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por anubis Ver Mensaje
si cambio id_folio por otro campo me sigue diciendo que no existe id_folio.
O sea,
Código SQL [-]
select max(fecha) from tabla
te dice: Error, id_folio no existe ???
Responder Con Cita
  #15  
Antiguo 20-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
sip

le
Código SQL [-]
pongo max(id_proveedor) from compras

tambien me dice lo mismo que el id_folio no existe.

Si lo hago desde el flamerobin no tengo ningun problema con id_folio que, de hecho, me devuelve el ultimo.

ya probe a poner un form nuevo para probar y me da lo mismo.
Responder Con Cita
  #16  
Antiguo 20-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Está claro que estás ejecutando otro sql, revisa todo porque ahí hay un "cacao" de cuidado
Responder Con Cita
  #17  
Antiguo 20-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Creo que ya se porque me dice que no existe.

Puede ser porque tengo en la misma tabla claves foraneas y al ponerle solo eso me bota el error?

si es asi, como se puede hacer esta linea

Código Delphi [-]
zquery1.sql.text:='select id_folio from compras';

porque me obliga a meter el resto de campos.

Me explico,

si pongo

Código SQL [-]
select * from compras


no hay problema

si pongo solo

Código SQL [-]
select id_folio from compras

me dice que me falta otro campo, se lo añado,
y asi sucesivamente hasta que he puesto todos, que equivalen a

Código SQL [-]
 select * from compras
Responder Con Cita
  #18  
Antiguo 20-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Buenas,

perdonen ustedes.

No me funcionaba porque tenia en otros forms referencia a esos campos en las propiedades del campo db
Responder Con Cita
  #19  
Antiguo 20-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por anubis Ver Mensaje
No me funcionaba porque tenia en otros forms referencia a esos campos en las propiedades del campo db
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Está claro que estás ejecutando otro sql
Responder Con Cita
  #20  
Antiguo 21-06-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Parece que nunca aprendo
una disculpa.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber último insertado en campo incrementable MON___ SQL 2 15-07-2007 19:26:52
Como lograr el último ID insertado? anavarro Firebird e Interbase 2 25-11-2004 16:22:42
Obtener ClaveMaestra del registro insertado. jplj Conexión con bases de datos 11 20-05-2004 00:18:33
Obtener el último registro insertado mutant09 SQL 3 04-05-2004 20:59:21
como saber el identificador del último registro almacenada en una base de datos. soyhugo Varios 2 16-02-2004 16:04:04


La franja horaria es GMT +2. Ahora son las 12:39:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi