none
Guardar campos texbox en una tabla de SQL RRS feed

  • Pregunta

  • hola a todos

    estoy desarrollando un formulario con barios texbox, la idea es guardar la cantidad de artículos individual y su descripción, lo que no se como realizar es si el usuario selecciona varios texbox como guardarlos en el campo SCRAPINDIVIDUAL y TIPODESCRAP.

    ejemplo:

    tengo una cantidad de 3 artículos con un defecto. 3 con un defecto de ralla y 1 con blancura, lo que requiero es guardar estos dos campos en mis campos SCRAPINDIVIDUAL y TIPODESCRAP 

    este es mi código

     {
                                    
                                    try //protejemos la consulta
                                    {
                                        comando.Connection = conexion;
                                        //el simbolo @ nos indica los parametros que le vamos a pasar
                                        //este codigo es tambien util para update y delete
                                        comando.CommandText = "insert into scrap(ORDENDEPRO,MAQUINA,TURNO,TOTALDESCRAP,SCRAPINDIVIDUAL,TIPODESCRAP) values(@ORDENDEPRO, @MAQUINA, @TURNO, @TOTALDESCRAP, @SCRAPINDIVIDUAL, @TIPODESCRAP)";
                                        conexion.Open();    //Abrimos la conexion a nuestra base de datos
                                        comando.Parameters.Clear();
                                        comando.Parameters.AddWithValue("ORDENDEPRO", TXTORDEN.Text);
                                        comando.Parameters.AddWithValue("MAQUINA", TXTMAQUINA.Text);
                                        comando.Parameters.AddWithValue("TURNO", TXTTURNO.Text);
                                        comando.Parameters.AddWithValue("TOTALDESCRAP", scrap1.Text);
                                        comando.Parameters.AddWithValue("SCRAPINDIVIDUAL", g1p1.Text);
                                        comando.Parameters.AddWithValue("TIPODESCRAP", DEFECTO1.Text);
                                       //comando.ExecuteNonQuery regresa el numero de filas afectadas
                                        int NFilas = comando.ExecuteNonQuery();
                                        if (NFilas > 0)
                                        {
                                            MessageBox.Show("datos Almacenados exitosamente");
                                        }
                                    }
                                    //.NET  captura las excepciones que ocurran al realizar nuestras consultas en SqlException 
                                    catch (SqlException ex)
                                    {
                                        MessageBox.Show("FALLO AL GENERAR LA CONSULTA: "+ex);
                                    }
                                    conexion.Close();    //se cierra la conexion para liberar espacio en memoria
                                    comando.Dispose();       //se limpian los comandos para poder hacer otra consulta
                                }

     
    martes, 25 de octubre de 2016 13:16

Respuestas

  • Hola HARIEKZ,

    Lo que podrías hacer es enlazar de algún modo el TextBox con el ComboBox y luego recorrer el contenedor, en este caso el GroupBox para ir ejecutando la consulta.

    Podrías ayudarte usando Linq using System.Linq;

    Esquema del documento : NombreDeControl - Tipo


    Si te das cuenta, los TextBox tienen el nombre de scrap# y el comboBox que seleccionará su tipo tiene el nombre compuesto de g1p1 + nombreTextBox, por lo que te sería muy fácil obtenerlos y validarlos.

    string filas = string.Empty; //Variable que almacena el resultado

    //Recorre los textBox dentro del contenedor foreach(TextBox txt in groupBox1.Controls.OfType<TextBox>(). OrderBy(x => x.Name)) { //Si no está vacío if(txt.Text.Trim() != string.Empty) { //Obtengo el comboBox ComboBox g1p1 = groupBox1.Controls.OfType<ComboBox>(). FirstOrDefault(x => x.Name == string.Concat("g1p1", txt.Name)); if(g1p1 != null) { if(g1p1.Text == string.Empty) { MessageBox.Show("Debe de completar la descripción");

    g1p1.Focus(); //Asigna el foco al control return; //Sale del evento.. } //Si todo es correcto agrega, aquí se ejecutaría la query //obteniendo los valores filas += txt.Text + " - " + g1p1.Text + Environment.NewLine; } } }

    Resultado : (Opcional según el caso)


    Resultado : En este caso por cuestión de ejemplo muestro los registros en cada línea de un textBox, si escribes los 3 campos, enviará los 3 y si es menos de igual manera.


    También podrías haber hecho uso de la propiedad Tag de cada elemento el cual puede almacenar un valor de tipo Object.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    martes, 25 de octubre de 2016 20:24