none
consulta para guardar datos de producto RRS feed

  • Pregunta

  • bueno ya tengo el insert para guardar datos  pero tengo dos tablas llamada produto y otra marca  marca esta como foranea en producto 


    mi insert

    INSERT INTO registro_entrada (nombre_producto, peso_gramo_mililitro, id_tipo_producto,valor,cantida)values ('" + nombre_producto + "','" + peso_gramo_mililitro + "','" + id_tipo_producto + "','" + valor + "','" + cantida + "')");

    pero no utiliso la foranea marca _id hago el insert aparte o de que forma lo puedo hacer 

    mi insert de marca

    @"INSERT INTO marca (marca)values ('" + marca +"')"

    esto va para instaciarlo en un boton guarda pero hacer las consultas no me sale el marac_id en producto 

    de forma puedo hacer el insert 


    domingo, 14 de agosto de 2016 16:59

Respuestas

  • Hola Figueroa

    Le haré una aproximación al manejo de inventarios:

    Normalmente se tiene una Tabla que contiene el catálogo de productos que se puede llamar Catálogo de Productos o simplemente Productos.

    Para los movimientos se utiliza una tabla adicional donde se registran los ingresos (entradas) y egresos (salidas). Un ingreso se produce cuando se adquiere el producto y un egreso cuando se vende o se utiliza. Lo anterior es una buena idea porque permite la auditoria o la verificación para el control del inventario.

    Un ejemplo de la estructura básica de la tabla Movimientos puede ser:

    CodigoProducto (FK, con la tabla Productos) 

    Fecha

    TipoMovimiento  (puede ser 1=Entradas   2=Salidas)

    Cantidad (un tipo de punto flotante)

    Cuando se requiera conocer la cantidad total de entradas se hace una consulta donde TipoMovimiento=1 ó la cantidad total de salidas donde TipoMovimiento =2, para el producto o productos que se determinen.

    Si se requiere el total de productos en existencias, es cuestión de restar (TotalEntradas - TotalSalidas).

    Ahora, si usted desea puede tener en la tabla Productos una columna llamada CantidadExistencias (Stock) que mantenga sincronizada. 

    Si desea conocer más sobre expresiones, columnas calculadas y desencadenadores vea el siguiente enlace:

    https://technet.microsoft.com/es-es/library/ms190188(v=sql.105).aspx

    Saludos,



    Miguel Torres



    domingo, 14 de agosto de 2016 23:03
  • hola

    partamos de la base que estas planteando el problema de forma incorrecta, la marca no se inserta cuando creas un nuevo producto

    si tienes una relacion uno a muchos entre productos y marcas debes por un lado crear las marcas y luego usar estas (seleccionado una de la lista) para crear el productos y relacionar los registros

    en una misma operacion no insertas en las dos tablas

    ademas tienes que usar parametros y NUNCA se concatene en un string, la estructura del codigo deberia ser

    using (SqlConnection conn = new SqlConnection("<connection string>"))  
    {  
        conn.Open();  
     
        string query = "INSERT INTO NombreTabla (campo1, campo2) VALUES (@param1, @param2)";  
        SqlCommand cmd = new SqlCommand(query, conn);  
        cmd.Parameters.AddWithValue("@param1", Convert.ToString(TextBox1.Text));  
        cmd.Parameters.AddWithValue("@param2", Convert.ToInt32(Textbox2.Text));  
     
        cmd.ExecuteNonQuery();  
     
    }

    en resumen cuando creas un producto deberias seleccionar que marca se asocia y usar el id de esa marca en el INSERT ue registra el producto

    Nota: porque llamas registro_entrada a una tabla de productos ? eso es una pesima idea porque trae confusion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 15 de agosto de 2016 14:42

Todas las respuestas

  • Hola Figueroa97

    No entendí del todo lo que quieres. Pero de antemano haré las siguientes inferencias:

    Tienes una tabla Marca y otra Productos. 

    Dado que cada producto tiene una sola marca, la relación debe ser:

    Marca 1----------------*Productos    (uno a varios), es decir la llave foránea estará en productos.

    Es posible que algunos productos no tengan marcas. Por lo que en la tabla Producto puedes configurar la columna de llave foránea para que acepte valores NULL. En ese caso no siempre que se agregue un producto hay que incluir un código de marca.

    Ahora, si el usuario ha seleccionado una marca (de un listado puesto en algún control), el código de esa marca debe ir incluido en la instrucción INSERT.

    Si le ha servido la información, vote y marque como respuesta.

    Saludos,



    Miguel Torres


    domingo, 14 de agosto de 2016 18:01
  • bien pero quiero que los atributos de marca aparescan en la tabla producto por medio de una consulta en otro foro en preguntado por eso ago referencia a este insert que les comente 
    domingo, 14 de agosto de 2016 18:10
  • Hola Figueroa

    USE Nombre_BaseDatos
    GO
    SELECT P.NombreProucto, P.Campo2, P.Campo3, P.CampoN, M.NombreMarca, M.OtroDetalleMarca
    FROM PRODUCTOS P, MARCAS M 
    WHERE P.CodigoMarca = M.CodigoMarca

    En el código anterior se recuperan cuatro campos de la tabla Productos (P) y dos de la tabla Marcas (M) que parecen unidos en una consulta única.

    Observe que la unión se hace a través de los campos CodigoMarca presente en ambas tablas.

    Usted debe poner los campos correspondientes a su las tablas cuyos registros que quiera recuperar. 

    Si tiene alguna duda favor consultar en este mismo hilo.

    Si le ha servido no olvide votar y proponer como respuestas.

    Saludos,



    Miguel Torres



    domingo, 14 de agosto de 2016 18:46
  • ya que estamos en este mismo hilo queria preguntar como hariamos para hacer que si voy a registrar el mismo producto ejemplo 

    producto: arequipe 1, marca alpina , cantida 3  se registro en la semana 1 pero en la semana 2 se registra producto: arequipe 1 marca alpina , cantida 5 pero el producto de la semana 1 su cantida no se desgasto pero no quiero duplicar ese producto si no que solo se actualize la cantida 

    -----gracias por su ayuda ---------

    domingo, 14 de agosto de 2016 20:38
  • Hola Figueroa

    Le haré una aproximación al manejo de inventarios:

    Normalmente se tiene una Tabla que contiene el catálogo de productos que se puede llamar Catálogo de Productos o simplemente Productos.

    Para los movimientos se utiliza una tabla adicional donde se registran los ingresos (entradas) y egresos (salidas). Un ingreso se produce cuando se adquiere el producto y un egreso cuando se vende o se utiliza. Lo anterior es una buena idea porque permite la auditoria o la verificación para el control del inventario.

    Un ejemplo de la estructura básica de la tabla Movimientos puede ser:

    CodigoProducto (FK, con la tabla Productos) 

    Fecha

    TipoMovimiento  (puede ser 1=Entradas   2=Salidas)

    Cantidad (un tipo de punto flotante)

    Cuando se requiera conocer la cantidad total de entradas se hace una consulta donde TipoMovimiento=1 ó la cantidad total de salidas donde TipoMovimiento =2, para el producto o productos que se determinen.

    Si se requiere el total de productos en existencias, es cuestión de restar (TotalEntradas - TotalSalidas).

    Ahora, si usted desea puede tener en la tabla Productos una columna llamada CantidadExistencias (Stock) que mantenga sincronizada. 

    Si desea conocer más sobre expresiones, columnas calculadas y desencadenadores vea el siguiente enlace:

    https://technet.microsoft.com/es-es/library/ms190188(v=sql.105).aspx

    Saludos,



    Miguel Torres



    domingo, 14 de agosto de 2016 23:03
  • hola

    partamos de la base que estas planteando el problema de forma incorrecta, la marca no se inserta cuando creas un nuevo producto

    si tienes una relacion uno a muchos entre productos y marcas debes por un lado crear las marcas y luego usar estas (seleccionado una de la lista) para crear el productos y relacionar los registros

    en una misma operacion no insertas en las dos tablas

    ademas tienes que usar parametros y NUNCA se concatene en un string, la estructura del codigo deberia ser

    using (SqlConnection conn = new SqlConnection("<connection string>"))  
    {  
        conn.Open();  
     
        string query = "INSERT INTO NombreTabla (campo1, campo2) VALUES (@param1, @param2)";  
        SqlCommand cmd = new SqlCommand(query, conn);  
        cmd.Parameters.AddWithValue("@param1", Convert.ToString(TextBox1.Text));  
        cmd.Parameters.AddWithValue("@param2", Convert.ToInt32(Textbox2.Text));  
     
        cmd.ExecuteNonQuery();  
     
    }

    en resumen cuando creas un producto deberias seleccionar que marca se asocia y usar el id de esa marca en el INSERT ue registra el producto

    Nota: porque llamas registro_entrada a una tabla de productos ? eso es una pesima idea porque trae confusion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 15 de agosto de 2016 14:42