• Viernes 29 de Marzo de 2024, 09:29

Autor Tema:  SQL Server y c#  (Leído 2277 veces)

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
SQL Server y c#
« en: Lunes 5 de Abril de 2010, 17:21 »
0
Hola miembros del Foro:

estoy tratando de aprender SQL Server y c#

Código: C#
  1.  SqlCommand cmd = new SqlCommand("sp_Insertar_Producto",con.Conexion);
  2.                 cmd.CommandType=CommandType.StoredProcedure;
  3.                
  4.                 cmd.Parameters.Add(new SqlParameter("@Cod_Producto", SqlDbType.VarChar));
  5.                 cmd.Parameters["@Cod_Producto"].Direction= ParameterDirection.Input;
  6.                 cmd.Parameters["@Cod_Producto"].Value=s_Cod_Producto;
  7.  
  8.                 cmd.Parameters.Add(new SqlParameter("@Nombre",SqlDbType.VarChar));
  9.                 cmd.Parameters["@Nombre"].Direction=ParameterDirection.Input;
  10.                 cmd.Parameters["@Nombre"].Value=s_Nombre;
  11.  
  12.                 cmd.Parameters.Add(new SqlParameter("@Descripcion",SqlDbType.VarChar));
  13.                 cmd.Parameters["@Descripcion"].Direction=ParameterDirection.Input;
  14.                 cmd.Parameters["@Descripcion"].Value=s_Descripcion;
  15.  
  16.                 con.Open();
  17.                 cmd.ExecuteNonQuery();
  18.                 con.Close();
  19.  
  20.    
  21.  



Código: SQL
  1. SET ANSI_NULLS ON
  2. SET QUOTED_IDENTIFIER ON
  3. GO
  4. ALTER PROCEDURE [dbo].[sp_Insertar_Producto]
  5.            
  6.             @Cod_Producto VARCHAR (50)
  7.            ,@Nombre VARCHAR (50)
  8.            ,@Descripcion VARCHAR (50)
  9.  
  10. AS
  11. INSERT INTO [Base].[dbo].[T_Productos]
  12.            ([Cod_Producto]
  13.            ,[Nombre]
  14.            ,[Descripcion]
  15.  
  16.      VALUES
  17.            (@Cod_Producto
  18.            ,@Nombre
  19.            ,@Descripcion
  20.  
  21.  

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

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: SQL Server y c#
« Respuesta #1 en: Jueves 8 de Abril de 2010, 02:32 »
0
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

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: SQL Server y c#
« Respuesta #2 en: Jueves 8 de Abril de 2010, 17:03 »
0
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

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#
  1.  public void Insertar_Producto()
  2.         {
  3.             try
  4.             {
  5.                 SqlCommand cmd = new SqlCommand("sp_Insertar_Producto",con.Conexion);
  6.                 cmd.CommandType=CommandType.StoredProcedure;
  7.                
  8.                 cmd.Parameters.Add(new SqlParameter("@Cod_Producto", SqlDbType.VarChar));
  9.                 cmd.Parameters["@Cod_Producto"].Direction= ParameterDirection.Input;
  10.                 cmd.Parameters["@Cod_Producto"].Value=s_Cod_Producto;
  11.  
  12.                 cmd.Parameters.Add(new SqlParameter("@Nombre",SqlDbType.VarChar));
  13.                 cmd.Parameters["@Nombre"].Direction=ParameterDirection.Input;
  14.                 cmd.Parameters["@Nombre"].Value=s_Nombre;
  15.    
  16.                 con.Open();
  17.                 cmd.ExecuteNonQuery();
  18.                 con.Close();
  19.  
  20.  
  21.                 SqlCommand cmd_Id = new SqlCommand("sp_Productos_Last_ID", con.Conexion);
  22.                 cmd_Id.CommandType = CommandType.StoredProcedure;
  23.                 con.Open();
  24.                 int  ID=Convert.ToInt32(cmd_Id.ExecuteScalar());
  25.                 con.Close();
  26.  
  27.  
  28.                 SqlCommand cmd1 = new SqlCommand("sp_Fechas_Insertar", con.Conexion);
  29.                 cmd1.CommandType = CommandType.StoredProcedure;
  30.  
  31.                 cmd1.Parameters.Add(new SqlParameter("@Id_Producto", SqlDbType.Int));
  32.                 cmd1.Parameters["@Id_Producto"].Direction = ParameterDirection.Input;
  33.                 cmd1.Parameters["@Id_Producto"].Value = ID;
  34.                
  35.  
  36.                 cmd1.Parameters.Add(new SqlParameter("@Fecha_Entrada", SqlDbType.DateTime));
  37.                 cmd1.Parameters["@Fecha_Entrada"].Direction = ParameterDirection.Input;
  38.                 cmd1.Parameters["@Fecha_Entrada"].Value = dt_Fecha_Entrada;
  39.  
  40.                 con.Open();
  41.                 cmd1.ExecuteNonQuery();
  42.                 con.Close();
  43.             }
  44.             catch (Exception ex)
  45.             {
  46.                 MessageBox.Show(ex.Message);
  47.                 con.Close();
  48.             }
  49.  
  50.         }
  51.  
  52.  
  53.  

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