CLR: .Net / Mono / Boo / Otros CLR > C#
SQL Server y c#
(1/1)
JaviMarciano:
Hola miembros del Foro:
estoy tratando de aprender SQL Server y c#
--- Código: C# --- SqlCommand cmd = new SqlCommand("sp_Insertar_Producto",con.Conexion); cmd.CommandType=CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@Cod_Producto", SqlDbType.VarChar)); cmd.Parameters["@Cod_Producto"].Direction= ParameterDirection.Input; cmd.Parameters["@Cod_Producto"].Value=s_Cod_Producto; cmd.Parameters.Add(new SqlParameter("@Nombre",SqlDbType.VarChar)); cmd.Parameters["@Nombre"].Direction=ParameterDirection.Input; cmd.Parameters["@Nombre"].Value=s_Nombre; cmd.Parameters.Add(new SqlParameter("@Descripcion",SqlDbType.VarChar)); cmd.Parameters["@Descripcion"].Direction=ParameterDirection.Input; cmd.Parameters["@Descripcion"].Value=s_Descripcion; con.Open(); cmd.ExecuteNonQuery(); con.Close();
--- Código: SQL ---SET ANSI_NULLS ONSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[sp_Insertar_Producto] @Cod_Producto VARCHAR (50) ,@Nombre VARCHAR (50) ,@Descripcion VARCHAR (50) ASINSERT INTO [Base].[dbo].[T_Productos] ([Cod_Producto] ,[Nombre] ,[Descripcion] VALUES (@Cod_Producto ,@Nombre ,@Descripcion
El problema está en:
Nesesito que al cargar estos datos en la Taba: T_Productos me cargue en la tabla T_Fechas un registro que contiene el Id_Producto
Fecha_Entrada
el Id_Producto de la Tabla T_Producto es primary key y Autoincremental
como puedo recuprrar ese Id cuando hago el ingreso para usarlo en el ingreso de la Tabla T_Fechas
No se tal vez se puede agregar un parametro de salida al Procedimiento Almacenado que me entregue el Id al Hacer el Insert Into?
de forma se haría eso?
eltruhanero:
Hola, eso se debe hacer siempre? No te sirve implementar esa insercion q depende del id del producto con un trigger?
Bueno si eso no sirve avisa y vemos una solucion alternativa.
Saludos, Daniel
JaviMarciano:
--- Cita de: "eltruhanero" ---Hola, eso se debe hacer siempre? No te sirve implementar esa insercion q depende del id del producto con un trigger?
Bueno si eso no sirve avisa y vemos una solucion alternativa.
Saludos, Daniel
--- Fin de la cita ---
Hola Daniel, si creo que sería lo mejor con un trigger, porque cada vez que se inserta un registro en T_Productos debe insertarse uno en T_Fechas
pero el tema es que no tengo idea como se hace uno
T_Productos:
Id_Producto
Cod_Producto
Nombre
................
T_Fechas:
Id_Producto
Fecha_Entrada
Fecha_Salida
--- Código: C# --- public void Insertar_Producto() { try { SqlCommand cmd = new SqlCommand("sp_Insertar_Producto",con.Conexion); cmd.CommandType=CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@Cod_Producto", SqlDbType.VarChar)); cmd.Parameters["@Cod_Producto"].Direction= ParameterDirection.Input; cmd.Parameters["@Cod_Producto"].Value=s_Cod_Producto; cmd.Parameters.Add(new SqlParameter("@Nombre",SqlDbType.VarChar)); cmd.Parameters["@Nombre"].Direction=ParameterDirection.Input; cmd.Parameters["@Nombre"].Value=s_Nombre; con.Open(); cmd.ExecuteNonQuery(); con.Close(); SqlCommand cmd_Id = new SqlCommand("sp_Productos_Last_ID", con.Conexion); cmd_Id.CommandType = CommandType.StoredProcedure; con.Open(); int ID=Convert.ToInt32(cmd_Id.ExecuteScalar()); con.Close(); SqlCommand cmd1 = new SqlCommand("sp_Fechas_Insertar", con.Conexion); cmd1.CommandType = CommandType.StoredProcedure; cmd1.Parameters.Add(new SqlParameter("@Id_Producto", SqlDbType.Int)); cmd1.Parameters["@Id_Producto"].Direction = ParameterDirection.Input; cmd1.Parameters["@Id_Producto"].Value = ID; cmd1.Parameters.Add(new SqlParameter("@Fecha_Entrada", SqlDbType.DateTime)); cmd1.Parameters["@Fecha_Entrada"].Direction = ParameterDirection.Input; cmd1.Parameters["@Fecha_Entrada"].Value = dt_Fecha_Entrada; con.Open(); cmd1.ExecuteNonQuery(); con.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); con.Close(); } }
Como veras la manera en que lo solucione es hacer una consulta y obtener el último Id de la tabla Producto a este le sumo 1 y
con ese registro hago la inserción en T_Fechas
pero como tu dices creo que la mejor forma sería con un trigger
puedes darme una idea de como hacerlo
Navegación
Ir a la versión completa