[SOLUCIONADO]Agregar registro a sql server

Iniciado por diego_lp, 7 Septiembre 2009, 04:16 AM

0 Miembros y 1 Visitante están viendo este tema.

diego_lp

Hola amigos, mi problema es el siguiente:
Tengo una tabla con varias columnas, la primera se llama "id" y es autonumerica (muy original  ;-)), lo que necesito es que al agregar un nuevo registro a la tabla me devuelva el numero id que se le asigna al registro.
Espero puedan ayudarme
Muchas gracias.
Saludos
Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!

Hadess_inf

Crea un procedimiento almacenado que inserte el registro y que retorne el ultimo id registrado (en este caso del dato insetado), tendrias que trabajar con output('s), luego tendrias que crear una funcion que facilite aun mas el uso del procedimiento almacenado y finalmente solo usar el metodo.

Saludos.

Kasi

Prueba con :
SELECT TOP(1) id FROM NOMBRE_TABLA ORDER BY ID ASC
Esto te deberia ordenar la tabla según la ID, y cojerte el ID mas alto que estará en la primera fila, si no , solo cambia ASC por DESC y listo.

Saludos

Atrum

Por que no creas un trigger para cuando insertes, y que te devuelva la id de la tabla inserted.

raul338

Cita de: Xtriker en  7 Septiembre 2009, 20:43 PM
Por que no creas un trigger para cuando insertes, y que te devuelva la id de la tabla inserted.

se puede hacer eso ????  :o :o
Cita de: Kasi en  7 Septiembre 2009, 16:12 PM
Prueba con :
SELECT TOP(1) id FROM NOMBRE_TABLA ORDER BY ID ASC
Esto te deberia ordenar la tabla según la ID, y cojerte el ID mas alto que estará en la primera fila, si no , solo cambia ASC por DESC y listo.

Saludos
no estoy seguro que funcione, ahora, si dices que es autonumerico (y nunca reseteas el contador) te conviene (o es mas facil) esto:

SELECT MAX(id) FROM NOMBRE_TABLA

Atrum

Bueno en realidad hay varias formas de hacerlo y como ya mencionaron una de ellas es utilizar "Output"
pero yo creo que la mas facil es agregar el TableAdapter y despues en el equema de datos le das click derecho a tu TableAdapter y le pones "agregar consulta" o "add query", posteriormente se debe de abrir un asistente, seleccionas "Usar instrucciones SQL", y le das siguente, cuando te pida el tipo de consulta le das INSERT y cuando le des siguiente te va a generar algo asi:

Código (sql) [Seleccionar]

INSERT INTO [Personas] ([Nombre], [Descripcion]) VALUES (@Nombre, @Descripcion);
SELECT ID,Nombre,Descripcion FROM Grupos WHERE (ID = SCOPE_IDENTITY())


este metodo te insertara el nuevo dato en la tabla y te retornara la fila que se inserto, asi que solo bastaria modificarla para que solo nos deje el dato que queremos.

Código (sql) [Seleccionar]

INSERT INTO [Personas] ([Nombre], [Descripcion]) VALUES (@Nombre, @Descripcion);
SELECT ID FROM Grupos WHERE (ID = SCOPE_IDENTITY())


y entonces eso te retornaria el id del dato insertado

NOTA: Esto es utilizando VS 2008, no se que tan diferente sea en otras versiones

diego_lp

#6
Terminé utilizando "SELECT MAX(id) FROM NOMBRE_TABLA" como digo raul338 ya que aunque tal vez no sea la mas prolija es la mas sencilla y me funcionó perfectamente, pero estoy seguro que todas las soluciones me hubieran servido, muchas gracias a todos por tomarse la molestia de contestar.  ;-)
Problema resuelto  ;D
Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!