Principales respuestas
Guardar campos texbox en una tabla de SQL

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 }
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- Propuesto como respuesta Laura CeglzModerator viernes, 28 de octubre de 2016 21:35
- Marcado como respuesta Laura CeglzModerator martes, 15 de noviembre de 2016 17:51