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. Hola estoy con un formulario de alta y a parte del alta en la tabla correspondiente, tengo que insertar el id autonumerico del registro recien ...
  #1 (permalink)  
Antiguo 13/05/2005, 04:30
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Conocer el id autonumerico del nuevo registro

Hola estoy con un formulario de alta y a parte del alta en la tabla correspondiente, tengo que insertar el id autonumerico del registro recien creado en otra tabla.
Como puedo saber cual es ese id recien creado???

Gracias por cualquier sugerencia.
  #2 (permalink)  
Antiguo 13/05/2005, 04:38
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
en MySQL: select @@identity;

En SQL server tendrás que mirar su documentación (o por google), aunque es probable que sea igual
  #3 (permalink)  
Antiguo 13/05/2005, 04:46
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
No puede ser con una cookie?

Response.Cookies("nombrecookie").Value = id
  #4 (permalink)  
Antiguo 13/05/2005, 04:58
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
SqlCommand

Una duda teorica:

Tengo un sqlcommand para un select y otro sqlcommand para un insert, podria usar el mismo sqlcommand????

Gracias.
  #5 (permalink)  
Antiguo 13/05/2005, 05:02
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Sip, hace un ExecuteNonQuery con el select @@identity, y te devolverá un entero
  #6 (permalink)  
Antiguo 13/05/2005, 05:32
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años, 1 mes
Puntos: 1
Que te parece??

Que te parece esta forma de hacerlo:

int auto=0;
myConnection = new SqlConnection (connectionString);
myCommand = new SqlCommand ("SELECT Max(ServId) as Maximo FROM Servicios;",myConnection);
myCommand.Connection.Open();
SqlDataReader readermax = myCommand.ExecuteReader();
if (readermax.Read())
{
if (readermax["Maximo"]==null)
auto=1;
else
auto=Convert.ToInt16(readermax["Maximo"])+1;
}
myCommand.Connection.Close();
String insertCmd = "insert into Servicios (ServId, ServNombre, ServDescripcion, ServIdTipo) values (@id, @Nombre," +
" @Descripcion, @Tipo); insert into UsuariosServicios (UsSerIdUs,UsServIdServ) values (@Usuario, @id)";
myCommand = new SqlCommand(insertCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@Id",
SqlDbType.Int, 4));
myCommand.Parameters["@Id"].Value = auto;
myCommand.Parameters.Add(new SqlParameter("@Nombre",
SqlDbType.NVarChar, 50));
myCommand.Parameters["@Nombre"].Value = NuevoServNombre.Value;
myCommand.Parameters.Add(new SqlParameter("@Descripcion",
SqlDbType.NVarChar, 50));
myCommand.Parameters["@Descripcion"].Value = NuevoServDescripcion.Value;
myCommand.Parameters.Add(new SqlParameter("@Tipo",
SqlDbType.Int, 4));
myCommand.Parameters["@Tipo"].Value = NuevoComboTipo.SelectedItem.Value;
myCommand.Parameters.Add(new SqlParameter("@Usuario",
SqlDbType.Int, 4));
myCommand.Parameters["@Usuario"].Value = Request.QueryString["id"];
myCommand.Connection.Open();
try
{
if (NuevoServNombre.Value=="")
MsgBox1.alert("Debe de insertar el Nombre del servicio");
else if (NuevoServDescripcion.Value=="")
MsgBox1.alert("Debe de insertar la descripcion del servicio");
else
{
//myCommand.ExecuteNonQuery();
//Response.Redirect("MenuadministradorServicios.aspx ?Ok=1&Nombre="+Request.QueryString["Nombre"].ToString()+"&Id="+Request.QueryString["id"].ToString());
}
}
  #7 (permalink)  
Antiguo 13/05/2005, 05:43
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Es una, forma, pero poco correcta para mi gusto, y te pongo un ejemplo, 2 usuarios intentan realizar la accion simultaneamente, los dos leen el mismo auto, y los dos pasan el mismo auto+1,

Te recomiendo que busques la consulta que lo devuelve en la documentacion de tu SQL Server o en Google.
  #8 (permalink)  
Antiguo 13/05/2005, 05:46
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Creo que para SQL Server, es SCOPE_IDENTITY() o select SCOPE_IDENTITY() o algo así
  #9 (permalink)  
Antiguo 13/05/2005, 07:08
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 19 años, 7 meses
Puntos: 2
No sé exactamente como estás trabajando, pero una buena forma de trabajar es que lo hagas con procedimientos
almacenados, en el stored procedure tendrías tu insert into dentro de una transacción de forma que te evites
el problema que te comentó jose_minglein2, para capturar el autonumérico del nuevo registro puedes declarar
un parámetro como output en el stored procedure, y justamente después de hacer tu insert puedes asignarle el valor
el parámetro de esta forma:
set @ID = @@IDENTITY
Ya luego al final, retornas este parámetro, de esta forma lo puedes entonces leer desde asp, de forma que hagas con el
lo que necesites.
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:18.