none
como insertar datos a una tabla si el campo no esta vacio.

    Pregunta

  • tengo un formulario como si fuera una factura, es de inventario que se actualiza, quisiera saber como puedo hacer para que la fila que no tenga datos no se guarde en blanco o vacio en la base de datos.

    este es un codigo normal de insertar:

    string q = @"INSERT INTO tabla_recepcion(n_recepcion,fecha_recepcion,cantidad_recepcion,unidad_recepcion,descripcion_recepcion,partida,codigo_articulo,valor_unitario,registrado_recepcion)
                                VALUES
                                (@v_recepcion,@dateTimePicker1_fecha_recepcion,@v_cantidad,@comboBox1_unidad,@v_descripcion,comboBox1_partida,@v_codigo,@valor,@comboBox1_registrado)";

    ADJUNTO LA IMAGEN PARA QUE SE COMPRENDA MEJOR LO QUE DESEO HACER, CADA FILA BUSCA UN PRODUCTO, AL FINAL DEBO GUARDARLOS, SI NO BUSCO UN PRODUCTO EN ALGUNA DE LAS FILAS OSEA LA DEJO EN BLANCO, NO QUISIERA QUE ME ENVIARA DATOS VACIOS A LA BASE DE DATOS PERO QUE SI SE GUARDEN LAS FILAS QUE TENIAN DATOS. TODO SE GUARDA CON UN SOLO BOTON DE GUARDAR.


    Humberto Martinez

    miércoles, 4 de mayo de 2016 18:07

Respuestas

  • hola

    >>no se a que se refiere con representar los datos

    que control estas usando, porque esta claro que no es un DataGridView

    parece ser un Repeater o quizas un TableLayoutPanel en donde defines los controles en las celdas

    >>pero nunca he desarrollado algo como lo que deseo ahora como si fuera una factura que uno busca productos y al final los carga en la misma tabla y las filas vacias no carguen nada.

    si usas el control Repeater puede agregar items de forma dinamica

    DataRepeater Control for Windows Forms

    en el codigo que muestras veoque accedes a un textbox txt_recepcion a un txt_cantidad ,etc, pero no se supone que puedes tener varias lineas ?

    si es asi deberia ser un array de controles los que debas iterar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 4 de mayo de 2016 18:34

Todas las respuestas

  • hola

    que control usas para representar los datos ? como iteras por cada item que insertas?

    Podrias validar los datos antes de insertar, si validas que los campos de cantidad, unidad, descripcion etc estan vacions no invocas el insert

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 4 de mayo de 2016 18:12
  • la verdad no soy muy experto, no se a que se refiere con representar los datos.

    siempre he enviado datos a una tabla pero tomando en cuenta una sola fila de datos o un conjunto de datos en total como un gran todo, pero nunca he desarrollado algo como lo que deseo ahora como si fuera una factura que uno busca productos y al final los carga en la misma tabla y las filas vacias no carguen nada.

    presento mi codigo normal cuando inserto datos comunmente:

    private void insertar_recepcion ()
            {
                OleDbConnection Conexion;

                Conexion = new OleDbConnection(ConfigurationManager.ConnectionStrings["almacenuttc.Propierties.Settings.almacendbConnectionStrings"].ToString());
                try
                {

                    string v_recepcion = txt_recepcion.Text;
                    //string v_cantidad = txt_cantidad.Text;
                    string v_descripcion = txt_descripcion.Text;
                    string v_codigo = txt_codigo.Text;
                    decimal valor = 0;
                    int v_cantidad=0;

                    decimal.TryParse(txt_valor.Text, out valor);

                    int.TryParse(txt_cantidad.Text, out v_cantidad);

                    string q = @"INSERT INTO tabla_recepcion(n_recepcion,fecha_recepcion,cantidad_recepcion,unidad_recepcion,descripcion_recepcion,partida,codigo_articulo,valor_unitario,registrado_recepcion)
                                VALUES
                                (@v_recepcion,@dateTimePicker1_fecha_recepcion,@v_cantidad,@comboBox1_unidad,@v_descripcion,comboBox1_partida,@v_codigo,@valor,@comboBox1_registrado)";

                    OleDbCommand COMANDO = new OleDbCommand(q, Conexion);

                    COMANDO.Parameters.Add(new OleDbParameter("@v_recepcion", OleDbType.VarChar, 35));
                    COMANDO.Parameters["@v_recepcion"].Value = v_recepcion;

                    COMANDO.Parameters.Add(new OleDbParameter("@dateTimePicker1_fecha_recepcion", OleDbType.Date));
                    COMANDO.Parameters["@dateTimePicker1_fecha_recepcion"].Value = @dateTimePicker1_fecha_recepcion.Value;

                    COMANDO.Parameters.Add(new OleDbParameter("@v_cantidad", OleDbType.Integer));
                    COMANDO.Parameters["@v_cantidad"].Value = v_cantidad;

                    COMANDO.Parameters.Add(new OleDbParameter("@comboBox1_unidad.Text", OleDbType.VarChar, 35));
                    COMANDO.Parameters["@comboBox1_unidad.Text"].Value = comboBox1_unidad.Text;

                    COMANDO.Parameters.Add(new OleDbParameter("@v_descripcion", OleDbType.VarChar, 35));
                    COMANDO.Parameters["@v_descripcion"].Value = v_descripcion;

                    COMANDO.Parameters.Add(new OleDbParameter("@comboBox1_partida.Text", OleDbType.VarChar, 35));
                    COMANDO.Parameters["@comboBox1_partida.Text"].Value = comboBox1_partida.Text;

                    COMANDO.Parameters.Add(new OleDbParameter("@v_codigo", OleDbType.VarChar, 35));
                    COMANDO.Parameters["@v_codigo"].Value = v_codigo;

                    COMANDO.Parameters.Add(new OleDbParameter("@valor", OleDbType.Decimal));
                    COMANDO.Parameters["@valor"].Value = valor;

                    COMANDO.Parameters.Add(new OleDbParameter("@comboBox1_registrado.Text", OleDbType.VarChar, 35));
                    COMANDO.Parameters["@comboBox1_registrado.Text"].Value = @comboBox1_registrado.Text;

                    COMANDO.Connection.Open();
                    COMANDO.ExecuteNonQuery();
                    COMANDO.Connection.Close();

                    MessageBox.Show("Datos guardatos con éxito");

                }

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    Conexion.Close();
                }

            }


    Humberto Martinez

    miércoles, 4 de mayo de 2016 18:18
  • hola

    >>no se a que se refiere con representar los datos

    que control estas usando, porque esta claro que no es un DataGridView

    parece ser un Repeater o quizas un TableLayoutPanel en donde defines los controles en las celdas

    >>pero nunca he desarrollado algo como lo que deseo ahora como si fuera una factura que uno busca productos y al final los carga en la misma tabla y las filas vacias no carguen nada.

    si usas el control Repeater puede agregar items de forma dinamica

    DataRepeater Control for Windows Forms

    en el codigo que muestras veoque accedes a un textbox txt_recepcion a un txt_cantidad ,etc, pero no se supone que puedes tener varias lineas ?

    si es asi deberia ser un array de controles los que debas iterar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 4 de mayo de 2016 18:34
  • estoy comenzando a entender. te explico un poco mas para que me ayudes amigo:

    lo que ves alli es un formulario un groupbox que tiene dentro una tabla y dentro de las tablas los controles normales.

    este es un programa para controlar el inventario, el codigo anterior que le mande no corresponde a este formulario.

    agregué tres filas de controles a la tabla porque por ejemplo cuando alguien llega al almacen a pedir alguno material para sacar a la venta, digamos que vinieron a buscar dos articulos diferentes, yo los anoto y guardo, pero lo que me ocurre es que como el boton guardar tiene programado el metodo de guardar, al llenar dos campos en vez de los tres campos, en la base de datos se me guarda una fila vacia.

    si por ejemplo llenara una fila en el formulario, en la tabla se me guardaria la fila llena y tambien las dos filas vacias.

    estoy usando un INSERT para cada fila, pero el boton ejecuta todos los INSERT,

    ¿Debo colocar un boton GUARDAR PARA CADA FILA? o puedo filtrar de alguna forma que el boton guardar solo lleve a la base de datos las filas que tengan datos?.

    espero poderme explicar.


    Humberto Martinez

    miércoles, 4 de mayo de 2016 18:44