Foros del Web » Programación para mayores de 30 ;) » .NET »

Conocer el id autonumerico del nuevo registro

Estas en el tema de Conocer el id autonumerico del nuevo registro en el foro de .NET en Foros del Web. Me gustaria saber si alguien sabe la forma de conocer el id autonumerico que se crea cuando se añade un nuevo registro. Gracias....
  #1 (permalink)  
Antiguo 23/05/2005, 03:37
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 7 meses
Puntos: 1
Conocer el id autonumerico del nuevo registro

Me gustaria saber si alguien sabe la forma de conocer el id autonumerico que se crea cuando se añade un nuevo registro.
Gracias.
  #2 (permalink)  
Antiguo 23/05/2005, 04:42
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Dependerá de tu Gestor de Base de Datos, aunque el lenguaje SQL es en teoría estandar, ésto no es así realmente y cada Gestor tiene sus instrucciones
  #3 (permalink)  
Antiguo 23/05/2005, 07:23
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Si no recerdo mal, para SQL Server tenías que añadir a la sentencia de inclusión esto:

Código:
Dim objCmd As New SqlCommand("INSERT INTO ....;@@IDENTITY")
Dim id As Integer = objCmd.ExecuteScalar
Si no es exactamente así, por ahí van los tiros.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 23/05/2005, 09:38
 
Fecha de Ingreso: abril-2005
Mensajes: 82
Antigüedad: 19 años, 7 meses
Puntos: 2
yo lo que hago es ejecutar una sentencia sql que me muestre el id mayor de la tabla donde esta el autonumerico. Despues con sumarle uno te vale para saber cual sera el siguiente:

select max(id) from tabla1
  #5 (permalink)  
Antiguo 23/05/2005, 10:35
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Lo primero es saber que base de datos utilizas ...
  #6 (permalink)  
Antiguo 23/05/2005, 10:38
 
Fecha de Ingreso: noviembre-2004
Mensajes: 10
Antigüedad: 20 años
Puntos: 0
Eso no se hace!

Cita:
Iniciado por erkillo
yo lo que hago es ejecutar una sentencia sql que me muestre el id mayor de la tabla donde esta el autonumerico. Despues con sumarle uno te vale para saber cual sera el siguiente:

select max(id) from tabla1
Eso es lo que no hay que hacer NUNCA!¿Que pasa cuando hay más de un usuario insertando a la vez?
  #7 (permalink)  
Antiguo 23/05/2005, 11:31
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 20 años
Puntos: 0
Suponiendo que estés con BD SQL Server... puedes trabajar con procedimientos almacenados y hacer que el procedimiento te retorne el valor del campo autonumerico, para ello tendrías un parametro OUTPUT y al final retornarías el parametro.
Esta es solo una opción...

Por cierto estoy de acuerdo con devjoker con lo del select max(id) from tabla1, jej jej en lo que tengas más de un usuario insertando comenzarán los problemas.
Saludos!!
__________________
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas. Albert Einstein
  #8 (permalink)  
Antiguo 24/05/2005, 02:26
 
Fecha de Ingreso: abril-2005
Mensajes: 82
Antigüedad: 19 años, 7 meses
Puntos: 2
bueno, yo es que todavia no he hecho programa para trabajar en red jejejeje.
  #9 (permalink)  
Antiguo 24/05/2005, 02:55
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 7 meses
Puntos: 1
Dificilmente

Deciros que yo he probado a con el max y es muuuuuuuy dificil que se repita de echo a mi nunca se me repitio el registro. Tendrian que darle los dos a la vez.
De todos modos aunke intente meter el mismo como no se puede repetir xq es clave principal pues no lo validara.
  #10 (permalink)  
Antiguo 24/05/2005, 03:03
 
Fecha de Ingreso: abril-2005
Mensajes: 82
Antigüedad: 19 años, 7 meses
Puntos: 2
yo por eso lo decia, yo hace un tiempillo que lo uso y de momento no me ha dado problemas, aunque tampoco he hecho programas grandes, ni que trabajen en red.
  #11 (permalink)  
Antiguo 24/05/2005, 03:45
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
No lo validara pero saltará una excepción, no se que pruebas habrás hecho, pero intenta registrar mil usuarios simultaneamente a un BD, una locura, no se puede ni se debe hacer así
  #12 (permalink)  
Antiguo 24/05/2005, 03:51
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 7 meses
Puntos: 1
y sino???

Y como seria si no quiero usar precedimientos almacenados???? Xq en todos los lados viene usandolos.
  #13 (permalink)  
Antiguo 24/05/2005, 04:07
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
Pues ya te digo, que depende de tu gestor, p.ej. en MySQL, con insert into tabla values('loquesea');select @@identity; te devuelve el id autonumerico insertado de dicha transaccion.

Pero como dije, el SQL no es estandar como debería ser y cada gestor tiene su propia sintaxis para estas cosas, tendrías que mirar la documentación del tuyo
  #14 (permalink)  
Antiguo 24/05/2005, 04:18
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 7 meses
Puntos: 1
Mira pongo esto:
INSERT INTO Servicios
(ServNombre, ServDescripcion, ServIdTipo)
VALUES ('diego', 'Descripcion', 1);
SELECT @@IDENTITY;

Pero como recojo el valor del id que ha creado???
  #15 (permalink)  
Antiguo 24/05/2005, 04:28
Avatar de izar  
Fecha de Ingreso: enero-2004
Mensajes: 519
Antigüedad: 20 años, 10 meses
Puntos: 1
select max(id) from tabla1 no funcionaria no?

el maximo codigo de una tabla, puede ser 80, pero cuando borramos registros añadimos, borrados etc el automuerico sique incrementandose y no tendrian porque coincidir...
  #16 (permalink)  
Antiguo 24/05/2005, 04:43
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 7 meses
Puntos: 1
ExecuteNonQuery();

La sql la estoy insertando con ExecuteNonQuery(); hay alguna posibilidad de recoger asi el select @@identity????
O tengo que hacer un datareader???
  #17 (permalink)  
Antiguo 24/05/2005, 04:57
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 7 meses
Puntos: 1
ya esta

Ya me salio Gracias.
  #18 (permalink)  
Antiguo 24/05/2005, 05:28
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 20 años
Puntos: 8
OK, supongo que lo habrás hecho con ExecuteScalar, si no, con ExecuteScalar lo recoges
  #19 (permalink)  
Antiguo 24/05/2005, 06:09
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Je je, después de varias vueltas veo que hemos llegado a algo parecido a lo que había puesto yo. Me doy por satisfecho entonces, no andaba muy desencaminado.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:24.