Visual Basic - Pasar los datos de un Datagridview a una base de datos Access

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Gabriel (4 intervenciones) el 06/04/2015 06:48:00
primero que nada hola.
mi consulta es la siguiente, cree un formulario en visual basic 2010 de facturación al introducir el código de un producto en un textbox me carga todo los datos del producto en el datagrid hasta ahi todo va todo ok!! ahora el problema es que no se como hacer para guardar ese datagridview en mi base de datos, y que se limpie el datagridview para poder facturar de nuevo.
busque en todos lados en Internet y no logro solucionarlo
agradezco toda la ayuda brindada
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 Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 07/04/2015 04:38:10
Para limpiar no encontraste nada en internet?

Tan simple como hacer un datagridview.rows.clear()

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
sin imagen de perfil

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Gabriel (4 intervenciones) el 07/04/2015 05:32:39
gracias por responder!!
esa es la parte facil la complicada es la de guardar. que no logro hacerla.
dejo el codigo del programa y un par de capturas de pantalla capas puede ayudar a explicarme mejor.
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 Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 07/04/2015 17:17:32
Guardar también es sencillo, que habría de extraordinario?

El asunto está en que debes hacer un for para recorrer cada fila del datagridview.

Sino como pretendes capturar los datos de cada fila?.

Hay que echarle ganas al asunto, al menos con las cosas elementales, sino como pretendes hacer una factura?.

No todo se basa en que me pase preguntando a como hago cada cosa sencilla que uno lo debe investigar, y el hecho de investigar no significa que preguntes por lo que no investigaste.

Todos empezamos desde cero, pero preguntando por cada letra o palabra, sino que hay que ponerle ganas al asunto y estudiar.

Hace años publiqué como grabar datos con Access, y VB 2005, y ha sido visto por muchas persona y ni siquiera lo revisaste y dices que no encuentras nada.

Acá te dejo el enlace para que lo revises y mejores en tus inserciones que son muy vulnerables a inyeccion de código.

Revisa esto tal vez te sirve

http://wilfredo-patricio.blogspot.com/2008/07/procedimientos-almacenados-en-access-y.html
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

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Gabriel (4 intervenciones) el 07/04/2015 21:27:47
Muchas gracias por responder. nc si viste el codigo que publique ?? por las dudas te escribo la parte donde hice el for el problema que se me presenta es que le doy depurar a mi programa y funciona todo ok, hago la primer factura y lo guarda todo exelente!!, intento volver a guardar otra y me da error. por las dudas te dejo el for y te animas a decirme que hice mal??
antes deje en un rar todo el codigo completo por las dudas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function GuardarDataGrid() As Boolean
 
    For X As Integer = 0 To DataGridView1.Rows.Count - 1
 
        Dim CadenaSQL1 As String = "INSERT INTO DetallesFactura (IdFactura, Cantidad, Codigo, Detalle, Descuento, Precio, Importe) VALUES ('" & _
            CStr(DataGridView1.Rows(X).Cells("IdFactura").Value) & "','" & CStr(DataGridView1.Rows(X).Cells("Cantidad").Value) & "','" & CDbl(DataGridView1.Rows(X).Cells("Codigo").Value) & "','" & _
            CStr(DataGridView1.Rows(X).Cells("Detalle").Value) & "','" & CDbl(DataGridView1.Rows(X).Cells("Descuento").Value) & "','" & CDbl(DataGridView1.Rows(X).Cells("Precio").Value) & "','" & CDbl(DataGridView1.Rows(X).Cells("Importes").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()
            Conexion.Open()
        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
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 08/04/2015 13:14:43
Bueno es muy simple solo decirte que tu código no me gusta para nada, pero en vista que has hecho tu tarea, te voy a pasar tu rutina algo mejorada

Solo Decirte una cosa muy importante a tener en cuenta, en las propiedades del datagridview
AllowUserToAddRows=false

y lo demás igual como lo has estado haciendo solo que mejorado

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
Function GuardarDataGrid() As Boolean
    Dim Conn As New OleDbConnection("Aquí tu cadena de conexion")
    Try
        Conn.Open()
        For X As Integer = 0 To DataGridView1.Rows.Count - 1
            Using cmdInsert As New OleDbCommand
                With cmdInsert
                    .CommandText = " INSERT INTO DetallesFactura (IdFactura, Cantidad, Codigo, Detalle, Descuento, Precio, Importe) VALUES (@IdFactura,@Cantidad,@Codigo,@Detalle,@Descuento,@Precio,@Importes)"
                    .CommandType = CommandType.Text
                    .Connection = Conn
                    .Parameters.Add("@IdFactura", OleDbType.Integer).Value = Convert.ToInt32(DataGridView1.Rows(X).Cells("IdFactura").Value)
                    .Parameters.Add("@Cantidad", OleDbType.Integer).Value = Convert.ToInt32(DataGridView1.Rows(X).Cells("Cantidad").Value)
                    .Parameters.Add("@Codigo", OleDbType.VarChar).Value = DataGridView1.Rows(X).Cells("Codigo").Value.ToString
                    .Parameters.Add("@Detalle", OleDbType.VarChar).Value = DataGridView1.Rows(X).Cells("Detalle").Value.ToString
                    .Parameters.Add("@Descuento", OleDbType.Double).Value = Convert.ToDouble(DataGridView1.Rows(X).Cells("Descuento").Value)
                    .Parameters.Add("@Precio", OleDbType.Double).Value = Convert.ToDouble(DataGridView1.Rows(X).Cells("Precio").Value)
                    .Parameters.Add("@Importes", OleDbType.Double).Value = Convert.ToDouble(DataGridView1.Rows(X).Cells("Importes").Value)
                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
        If Conn.State = ConnectionState.Open Then
            Conn.Close()
            Conn.Dispose()
        End If
    End Try
    Return True
End Function


Eso está solo para que copies y pegues, o bueno, tus tipos de datos en alguna linea revisa que sea el correcto, por lo demas ya no debes tener problemas de ningún tipo y puedes agregar toda la vida sin problemas.

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
1
Comentar
sin imagen de perfil

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Gabriel (4 intervenciones) el 09/04/2015 03:30:09
Muchas gracias tu código me funcionó a la perfección. Todavía no puedo encontrar el error en mi código. disculpa todas las molestia ocasionadas. Y gracias por responder.
un saludo muy cordial
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

pasar de un text a un campo en access

Publicado por JUAN CARLOS OCAMPO (1 intervención) el 27/09/2015 08:01:18
buenas noches, tengo un problema similar, no soy muy experto en el tema pero hago el intento quiero pasar los datos que ingrese a un textbox a una base de datos de access. ya tengo conectada la base de datos correctamente cuando empiezo a llenar los datos en los text, estos los guardo en una variable, pero mi problema aqui es: cuanto le doy el comando para insertar y le voy a pasar los values, no se como pasar esos valores que tengo en la respectivas variables.

dejo el codigo para su ayuda, mil graacias.

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
47
48
49
50
51
Private Sub botoninsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botoninsertar.Click
    Dim conexion As String
    conexion = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & "D:\bdaccesslibrovbnet.mdb" & ";"
    Dim nombre As String = campo1.Text
    Dim apellido As String = campo2.Text
    Dim id As String = campo3.Text
    Dim dir As String = campo4.Text
    Dim tel As String = campo5.Text
    Dim factu As String = campo6.Text
    Dim local As String = campo7.Text
    Dim nlocal As String = campo8.Text
    Dim vfactu As String = campo9.Text
    Dim nsorteo As String = campo10.Text
    Dim nsorteo2 As String = campo11.Text
    Dim nsorteo3 As String = campo12.Text
    Dim nsorteo4 As String = campo13.Text
    Dim nsorteo5 As String = campo14.Text
 
 
 
    Dim seleccion As String = "insert into  clientes(Nombres,Apellidos,Identificacion,Direccion,Telefono,Num_factura,Num_local,Nombre_local,valor_factura,nsorteo,nsorteo2,nsorteo3,nsorteo4,nsorteo5)VALUES("" + nombre + "","" + apellido + "","" + id + "","" + dir + "","" + tel +"","" + factu + "","" + local + "","" + nlocal + "","" + vfactu + "","" + nsorteo + "","" + nsorteo2 + "","" + nsorteo3 + "","" + nsorteo4 + "","" + nsorteo5 + "")  "
 
 
    '"select*from clientes"
    Dim adaptadordedatos As OleDbDataAdapter
    Dim tabladedatos As New DataTable
    Try
        adaptadordedatos = New OleDbDataAdapter(seleccion, conexion)
        adaptadordedatos.Fill(tabladedatos)
        MsgBox("Registro Insertado", MsgBoxStyle.Information)
 
        'tabla.DataSource = tabladedatos
    Catch ex As Exception
        MsgBox("Error: " & ex.Message, MsgBoxStyle.AbortRetryIgnore)
 
    End Try
    campo1.Text = ""
    campo2.Text = ""
    campo3.Text = ""
    campo4.Text = ""
    campo5.Text = ""
    campo6.Text = ""
    campo7.Text = ""
    campo8.Text = ""
    campo9.Text = ""
    campo10.Text = ""
    campo11.Text = ""
    campo12.Text = ""
    campo13.Text = ""
    campo14.Text = ""
End Sub
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 Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

pasar de un text a un campo en access

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 27/09/2015 22:31:16
Guíate de lo que publiqué arriba, solo quitas el for y el next, todo lo demás es igual, y en lugar de capturar los datos desde un datagridview como está el ejemplo lo haces desde tus textboxes, y te ahorrarías de pasarlo a variables que sería en vano en tu caso, ya que no veo otro uso que le estés dando a tus variables.

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
Imágen de perfil de victor
Val: 2
Ha disminuido su posición en 16 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar los datos de un Datagridview a una base de datos Access

Publicado por victor (1 intervención) el 09/07/2018 01:01:12
Excelente ejemplo peo me gustara saber donde usar BeginTransaction
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 Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar los datos de un Datagridview a una base de datos Access

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 09/07/2018 09:34:11
Eso es sencillo si estás usando igual MSAccess o SQL Server.

Si te fijas en el código que puse arriba, hay una línea donde se declara la conexión llamada Conn, debajo de esa linea puedes declarar
Dim T as SqlTransaction si es sql server sino pues en el caso de Access sería Dim OleDbTransaction

dentro del Try si te fijas bien, se está abriendo la conexion
Conn.Open()

En la siguiente línea puedes hacerlo así:

T=Conn.BeginTransaction

Ahora si sigues el ejemplo de arriba, la cosa quedaría así:
1
2
3
4
5
With cmdInsert
    .CommandText = " INSERT INTO DetallesFactura (IdFactura, Cantidad, Codigo, Detalle, Descuento, Precio, Importe) VALUES (@IdFactura,@Cantidad,@Codigo,@Detalle,@Descuento,@Precio,@Importes)"
    .CommandType = CommandType.Text
    .Connection = Conn
    .Transaction=T


Luego vendría todo lo demás tal como está el ejemplo arriba.

Cuando llegues al final de transacción y si todo salió correcto, lo que te quedaría sería hacer

T.Commit()

Que para el caso del ejemplo sería después del Next.

Las transacciones son para asegurar que todos los datos se guardan de manera correcta y no solo una parte, la transacción es todo o nada, pero siempre y cuando intervengan 2 tablas o mas, si es solo una, no tiene sentido.

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

Pasar los datos de un Datagridview a una base de datos Access

Publicado por maria (1 intervención) el 25/05/2021 20:24:17
No era necesario ser tan majadero
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