Visual Basic.NET - Recorrer DGV y guardar en tabla solo datos de la primera Col

 
Vista:
Imágen de perfil de Claudio
Val: 5
Ha aumentado su posición en 17 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recorrer DGV y guardar en tabla solo datos de la primera Col

Publicado por Claudio (8 intervenciones) el 26/05/2022 18:44:33
Buen día a todos.
Antes que nada, gracias a quien me pueda orientar y tender una mano.
Necesito guardar en una tabla de Access los datos de solo una columna de un DGV, la primera.
El tema es recorrer solo la primera columna del DGV y que se inserten en tabla los datos que contengan. Ocurre que conformé la tabla con unos 28 campos, los cuales 25 arbitrariamente no serán todos completados con datos desde la aplicación. Instauré la tabla con estos 25 últimos campos como No requeridos y Preestableciendo valor 0.
Ocurre que el problema lo tengo en el Insert dado que el DGV no va a contar con 25 filas a recorrer para que se inserten el total de datos. Muy probablemente tenga menos. Por eso quisiera que en todo caso me inserte valor 0 o nada en aquellos campos que estén sin dato. Dejo una imagen y el código (que sé que es incorrecto) solo a los efectos orientativos.
Logicamente al tener el DGV menos filas, el insert me da error por falta de parámetros.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
If Opcion = 1 Then
                ConsultaSelect = "INSERT INTO tbl_Parametrizacion_de_Empleados " &
                    "(Registro,Id_Empresa,Id_Empleado,Param_1,Param_2,Param_3,Param_4,Param_5)" &
                     "Param_6,Param_7,Param_8,Param_9,Param_10,Param_11,Param_12,Param_13,Param_14," &
                     "Param_15,Param_16,Param_17,Param_18,Param_19,Param_20,Param_21,Param_22,Param_23," &
                     "Param_24,Param_25) " &
                     "VALUES(@Reg,@Id_Empresa,@Id_Empleado,@Param_1,@Param_2,@Param_3,Param_4,Param_5," &
                     "@Param_6,@Param_7,@Param_8,@Param_9,@Param_10,@Param_11,@Param_12,@Param_13,@Param_14," &
                     "@Param_15,@Param_16,@Param_17,@Param_18,@Param_19,@Param_20,@Param_21,@Param_22,@Param_23," &
                     "@Param_24,@Param_25)"
                Conexion = New OleDbConnection(Cs)
                Conexion.Open()
                Cmd = New OleDbCommand(ConsultaSelect, Conexion)
                Cmd.Parameters.AddWithValue("@Reg", CInt(lbl_Reg_Nro.Text))
                Cmd.Parameters.AddWithValue("@Id_Empresa", CInt(lbl_Id_Emp_Nro.Text))
                Cmd.Parameters.AddWithValue("@Id_Empleado", CInt(lbl_Id_Empleado_Nro.Text))
                For Each row As DataGridViewRow In DataGridView3.Rows
                    Cmd.Parameters.Clear()
                    Cmd.Parameters.AddWithValue("@Param_1", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_2", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_3", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_4", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_5", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_6", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_7", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_8", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_9", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_10", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_11", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_12", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_13", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_14", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_15", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_16", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_17", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_18", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_19", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_20", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_21", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_22", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_23", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_24", CInt(row.Cells(0).Value))
                    Cmd.Parameters.AddWithValue("@Param_25", CInt(row.Cells(0).Value))
                    Cmd.ExecuteNonQuery()
                Next
            End If
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Hugo
Val: 50
Ha disminuido su posición en 5 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recorrer DGV y guardar en tabla solo datos de la primera Col

Publicado por Hugo (91 intervenciones) el 26/05/2022 20:02:09
Hola, solo para entender, quieres recorrer solo la primer columna "@Param_1" y guardar el datos en otra tabla?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Claudio
Val: 5
Ha aumentado su posición en 17 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recorrer DGV y guardar en tabla solo datos de la primera Col

Publicado por Claudio (8 intervenciones) el 26/05/2022 23:45:14
Hola buenas tardes. El tema es así. Recorrer el DGV pero solo levantar los datos que hayan en la primera Col. y guardarlos en la tabla que que figura en el Insert. (tbl_Parametrizacion_de_Empleados). Lo único que me interesa guardar son los datos de esa Col en los diferentes campos de la tabla. Ocurre que el DGV no va a estar siempre lleno con 25 filas, (que son la cantidad de parámetros que hay arbitrariamente en el Insert), Pasa que deben estar por si alguna vez se requieren.
Suponiendo que por ejemplo se carguen 15 filas del DGV con datos, van a quedar 10 @Param en el Insert sin datos, bueno la idea es que esos parámetros tomen valor 0 o null y guarden ese cero en la tabla.
Pensé en un condicional que si el parámetro no había tomado dato tome valor 0. Esto para que no me dé error al querer guardar.
Agrego Imagen.
El DGV de la Derecha es el que se guardaría. (Solo la Primera Col, la que dice Registro)
Gracias por tu molestia en contestar. Saludos.

628ff4a4be681-Captura-de-pantalla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Claudio
Val: 5
Ha aumentado su posición en 17 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Recorrer DGV y guardar en tabla solo datos de la primera Col

Publicado por Claudio (8 intervenciones) el 31/05/2022 19:31:02
Bueno, ya encanté la solución. La dejo para aquél que le pueda servir.
Muchas gracias a todos aquellos que intentaron una ayuda. Fue con la colaboración de gente de otro lugar a las que estoy muy agradecido .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ConsultaSelect = "INSERT INTO tbl_Parametrizacion_de_Empleados " &
                     "(Registro,Id_Empresa,Id_Empleado,Param_1,Param_2,Param_3,Param_4,Param_5," &
                     "Param_6,Param_7,Param_8,Param_9,Param_10,Param_11,Param_12,Param_13,Param_14," &
                     "Param_15,Param_16,Param_17,Param_18,Param_19,Param_20,Param_21,Param_22,Param_23," &
                     "Param_24,Param_25) " &
                     "VALUES(@Reg,@Id_Empresa,@Id_Empleado,@Param_1,@Param_2,@Param_3,@Param_4,@Param_5," &
                     "@Param_6,@Param_7,@Param_8,@Param_9,@Param_10,@Param_11,@Param_12,@Param_13,@Param_14," &
                     "@Param_15,@Param_16,@Param_17,@Param_18,@Param_19,@Param_20,@Param_21,@Param_22,@Param_23," &
                     "@Param_24,@Param_25)"
                Conexion = New OleDbConnection(Cs)
                Conexion.Open()
                Cmd = New OleDbCommand(ConsultaSelect, Conexion)
                Cmd.Parameters.AddWithValue("@Reg", CInt(lbl_Reg_Nro.Text))
                Cmd.Parameters.AddWithValue("@Id_Empresa", CInt(lbl_Id_Emp_Nro.Text))
                Cmd.Parameters.AddWithValue("@Id_Empleado", CInt(lbl_Id_Empleado_Nro.Text))
                For x = 0 To DataGridView3.Rows.Count - 1
                    Dim nRegistro = DataGridView3.Rows(x).Cells("Registro").Value.ToString
                    Cmd.Parameters.AddWithValue("@Param_", nRegistro).ToString()
                Next x
                For n = 1 To 25
                    If Not Cmd.Parameters.Contains("@Param_" & n.ToString) Then
                        Cmd.Parameters.AddWithValue("@Param_", 0).ToString()
                    End If
                Next
                Cmd.ExecuteNonQuery()
                MessageBox.Show("Alta Generada Exitosamente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar