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

[0] Índice de Mensajes

Ir a la versión completa