Visual Basic.NET - Guardar contenido datagrid en BD

 
Vista:
sin imagen de perfil

Guardar contenido datagrid en BD

Publicado por jose antonio (21 intervenciones) el 08/04/2016 16:56:20
Hola de nuevo a todos, os escribo por que me he encontrado en un callejon sin salida, estoy haciendo una aplicación un poco extensa y ya casi la he terminado estoy con retoques de ullima hora para hacerla mas facil de usar, bueno voy al grano. El tema es que tendo un datagrid que se alimenta de otro al que con el evento doble clik paso las filas, este al darle a guardar me lo almacena en una bd, ahora me veo en la necesidad de poder meter datos a mano directamente en este segundo grid pero al darle a guardar me dice que el parametro "dni" no tiene un valor predeterminado. tambien necesitaria que los datos que paso de un grid a este no se puedan manipular, por que al activar la propiedad edit en el grid, puedo editar todo el contenido, alguien puede orientarme?
gracias de antemano
este es el codigo con el que paso los datos de un grid a otro asi como rellenar varios textbox

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
Dim contador As Integer
    Private Sub dgv_cursos_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgv_cursos.CellMouseDoubleClick
        pasar_datos()
 
        Dim coleccion As DataGridViewSelectedRowCollection = dgv_cursos.SelectedRows
        Dim dni, apellidos, nombre, grados, federa, club_aiki As String
        Dim Agregar As String = "SI"
        'Buscamos en todas las FILAS del DataGrid2
        For Each FILA As DataGridViewRow In dgv_asisten.Rows
 
            If FILA.Cells(0).Value = dgv_cursos.CurrentCell.Value Then
                Agregar = "NO"
                MsgBox("Este dato ya fue agregado.")
                Exit For
            End If
 
        Next
        If Agregar = "SI" Then
 
 
            For Each fila As DataGridViewRow In coleccion
                dni = dgv_cursos(0, fila.Index).Value.ToString
                apellidos = dgv_cursos(1, fila.Index).Value.ToString
                nombre = dgv_cursos(2, fila.Index).Value.ToString
                grados = dgv_cursos(3, fila.Index).Value.ToString
                federa = dgv_cursos(8, fila.Index).Value.ToString
 
 
                club_aiki = dgv_cursos(9, fila.Index).Value.ToString
                ' Me.dgv_cursos.Rows(fila.Index).DefaultCellStyle.BackColor = Color.Red
                dgv_asisten.Rows.Add(dni, apellidos, nombre, grados, federa, club_aiki)
                contador = contador + 1
                Label5.Text = contador
            Next
        End If
 
 
 
 
 
 
    End Sub

y este con el que guardo en la BD

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
Function GuardarDataGrid() As Boolean
 
        Dim cb_tipo = cb_tipo_c.Text
        Dim cb_fede = cb_fede_cola.Text
 
        Try
 
            For X As Integer = 0 To dgv_asisten.Rows.Count - 1
                Using cmdInsert As New OleDbCommand
                    With cmdInsert
                        .CommandText = " INSERT INTO cursos (dni_cur,tipo_cur,profesor,lugar,federacion,fecha_curso,n_horas) VALUES (dni,'" & cb_tipo & "','" & profe.Text & "','" & lugar_eve.Text & "','" & cb_fede & "','" & fecha_eve.Text & "','" & horas_lec.Text & "')"
                        .CommandType = CommandType.Text
                        .Connection = conex
                        .Parameters.Add("dni", OleDbType.VarChar).Value = dgv_asisten.Rows(X).Cells(0).Value 'lee las celdas del dni
                    End With
                    Dim Correcto As Integer = cmdInsert.ExecuteNonQuery
                    If Correcto = 0 Then
                        MessageBox.Show("Error no se pudo agregar la fila", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End If
                End Using
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
        End Try
 
        limpiar_cursos()
 
 
        Return True
 
    End Function
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