Visual Basic.NET - ayuda! Guardar datagridview en bd access

 
Vista:
sin imagen de perfil

ayuda! Guardar datagridview en bd access

Publicado por roberta (14 intervenciones) el 11/11/2014 18:26:14
Hola a todos,
os expongo mi problema.
tengo un form con un datagridview. Este datagridview lo lleno manualmente y luego, mediante un botón guardar, hago lo siguiente:
creo una tabla en mi bd y guardo todos los datos del datagridview en dicha tabla.
tengo este código:
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
Function creatablapresupuestoenDDBB() As Boolean
 
        Dim IdPresupuesto As String = TextIdPresupuesto.Text
 
        'CONEXION
        Dim Conexion As New OleDbConnection
        Conexion.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0; Data Source = ..\\Debug\\presupuestos.mdb; Persist Security Info=False"
 
        '----------------------------------------------------------------- APRO LA CONNESSIONE -------------------------------------------------------------------------------
        Conexion.Open()
 
        '----------------------------------------------------------------- CREO UNA NUEVA TABLA ------------------------------------------------------------------------------
        Dim CreaTabla As String = "CREATE TABLE " & IdPresupuesto & " (Id COUNTER PRIMARY KEY, COD TEXT(255) NULL, DESCRIPCION MEMO NULL, PRECIO MONEY NULL)"
        Dim cmdTabla As New OleDbCommand(CreaTabla, Conexion)
        cmdTabla.ExecuteNonQuery()
 
        '--------------------------------------------------- RIEMPIO LA TABLA CON I DATI DEL DATAGRIDVIEW --------------------------------------------------------------------
        Dim CadenaSQL1 As String = "INSERT INTO " & IdPresupuesto & " (cod, descripcion, precio) VALUES (@Column1,@Column2,@Column3)"
        Dim cmd As New OleDbCommand(CadenaSQL1, Conexion)
        For Each row As DataGridViewRow In DataGridView1.Rows
            cmd.Parameters.AddWithValue("@Column1", CStr(row.Cells("Column1").Value))
            cmd.Parameters.AddWithValue("@Column2", CStr(row.Cells("Column2").Value))
            cmd.Parameters.AddWithValue("@Column3", CDbl(row.Cells("Column3").Value))
        Next
        cmd.ExecuteNonQuery()
 
        '---------------------------------------------------------------- CHIUDO LA CONNESSIONE ------------------------------------------------------------------------------
        Conexion.Close()
 
        Return True
    End Function


el problema es que este código me guarda solo el primer reglón del datagrid.
¿Cómo puedo hacer para que me guarde todas las líneas?
Utilizo Vb 2010 y Access 2010.

Gracias de antemano.
Un saludo.
Roberta
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 Carlos J. Medina
Val: 19
Ha aumentado su posición en 5 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

ayuda! Guardar datagridview en bd access

Publicado por Carlos J. Medina (34 intervenciones) el 12/11/2014 05:04:56
Hola Roberta,
Mira el código abajo descrito, este se ejecutará por cada linea visible del datagrid e insertará un registro en la bd por cada línea.

Buena suerte y si no te funciona me puedes contactar a mi correo.

Saludos,

Reemplaza tu código a partir de la línea siguiente...-- RIEMPIO LA TABLA CON I DATI DEL DATAGRIDVIEW -

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for X as integer = 0 to DataGridView1.Rows.count - 1
      Dim CadenaSQL1 As String = "INSERT INTO " & IdPresupuesto &  _
                                 "cod, descripcion, precio" & _
                                 ") VALUES('" & _
                                 DataGridView1.Rows(X).cell("Column1").Value & "','" & _
                                 DataGridView1.Rows(X).cell("Column1").Value & "','" & _
                                 DataGridView1.Rows(X).cell("Column1").Value & "')"
 
        Using cmdInsert As OleDbCommand = New OleDbCommand(CadenaSQL1, Conexion)
            If Conexion.State = ConnectionState.Open Then
                Conexion.Close()
            End If
            Conexion.Open()
            cmdInsert.ExecuteNonQuery()
            Conexion.Close()
        End Using
 next
 
 Return True
 
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil

ayuda! Guardar datagridview en bd access

Publicado por roberta (14 intervenciones) el 12/11/2014 10:22:18
Gracias Carlos J. Medina,
he hecho una pequeñísima modifica a tu código en la línea de la cadenaSQL1 y funciona perfecto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
For X As Integer = 0 To DataGridView1.Rows.count - 1
            Dim CadenaSQL1 As String = "INSERT INTO " & IdPresupuesto & "(cod, descripcion, precio" & ") VALUES('" & CStr(DataGridView1.Rows(X).Cells("Column1").Value) & "','" & CStr(DataGridView1.Rows(X).Cells("Column2").Value) & "','" & CDbl(DataGridView1.Rows(X).Cells("Column3").Value) & "')"
 
            Using cmdInsert As OleDbCommand = New OleDbCommand(CadenaSQL1, Conexion)
                If Conexion.State = ConnectionState.Open Then
                    Conexion.Close()
                End If
                Conexion.Open()
                cmdInsert.ExecuteNonQuery()
                Conexion.Close()
            End Using
        Next
 
        Return True
 
    End Function


Muchas gracias de corazón. Te tendré en cuenta para mis próximos eventuales problemas.
Muchas gracias otra vez.
Un saludo.
Roberta
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
sin imagen de perfil

ayuda! Guardar datagridview en bd access

Publicado por ROBERTA (14 intervenciones) el 13/11/2014 09:44:41
Hola Carlos J. Medina,
Gracias.
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

ayuda! Guardar datagridview en bd access

Publicado por Nelson (1 intervención) el 03/06/2016 15:34:47
hola la verdad que muy buena expicacion, me sirvio mucho
saludos cordiales
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