Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Recorrer datagrid y guardar en tabla

Estas en el tema de Recorrer datagrid y guardar en tabla en el foro de Visual Basic clásico en Foros del Web. Tengo un datagrid enlazado con varias tablas de access, al cual necesito añadirle 2 columnas más para introducir datos que no están en esas tablas. ...
  #1 (permalink)  
Antiguo 20/05/2008, 02:10
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Recorrer datagrid y guardar en tabla

Tengo un datagrid enlazado con varias tablas de access, al cual necesito añadirle 2 columnas más para introducir datos que no están en esas tablas.
Como hago para recorrer este datagrid y guardarlo en una tabla nueva?
  #2 (permalink)  
Antiguo 20/05/2008, 02:30
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Recorrer datagrid y guardar en tabla

Lo mas sencillo es recorrer el recordset al cual está enlazado el DataGrid, y guardar los registros en la nueva tabla.


  #3 (permalink)  
Antiguo 20/05/2008, 03:19
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

Como recorro el dataset y obtengo los datos?, estoy iniciándome en vb .net y no tengo experiencia
  #4 (permalink)  
Antiguo 20/05/2008, 09:46
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Recorrer datagrid y guardar en tabla

No, con un DataSet no puedes hacerlo, tendrías que utilizar un DataTable, pero si lo único que quieres es añadir dos columnas más al DataGrid, no veo el problema.
Puedes hacerlo a través de su propiedad Column:

DataGridView1.Columns.Add("NameCol1", "Header1")
DataGridView1.Columns.Add("NameCol2", "Header2")


Donde "NameCol1" es el nombre identificativo de la columna y "Header1" es el texto del encabezamiento.

  #5 (permalink)  
Antiguo 20/05/2008, 10:00
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

Gracias por tu respuesta, pero lo que quería es los valores que tengo en el datagrid o en el datatable pasarlos a otra tabla que no está en la consulta que tengo realizada, pero que sí tiene esos campos coincidentes.
Te explico, en la consulta tengo Idproveedor,Idcliente,Idobra,sum(ImporteAlbaran), todo esto agrupado por proveedor y por obra y quiero pasar los valores de estos campos a los correspondientes en la tabla Facturación, donde posteriormente se introducirá la fecha factura y número.
  #6 (permalink)  
Antiguo 20/05/2008, 10:15
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Recorrer datagrid y guardar en tabla

Hola,

no sé si es por mi máquina, pero esto va lentiiiiiiiisimo!
mañana intentaré ponerte un ejemplo.

  #7 (permalink)  
Antiguo 20/05/2008, 12:39
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

Te lo agrezco un montón.
  #8 (permalink)  
Antiguo 21/05/2008, 02:29
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Recorrer datagrid y guardar en tabla

Bueno, lo prometido es deuda.

Prueba con este procedimiento a "GuardarEnTabla" le pasas como prámetros la conexión que ya tienes abierta y la consulta.

Código:
Private Sub GuardarEnTabla(ByVal Con As SqlConnection, ByVal StrQry As String)
        Dim i As Integer
        Try
            Con.Open()

            Dim Cmd As New SqlCommand(StrQry, Con)
            ' creamos un reader con los datos de la consulta
            Dim Reader As SqlDataReader = Cmd.ExecuteReader

            Dim sql As String = ""
            ' leemos el reader y vamos ejecutando la consulta
            While Reader.Read
                sql = "INSERT INTO Facturacion ("
                For i = 0 To Reader.FieldCount - 1
                    sql = sql & Reader.GetName(i) & ","
                Next
                ' quitar la última coma
                sql = Microsoft.VisualBasic.Left(sql, Len(sql) - 1)
                sql = sql & ") VALUES ('"
                For i = 0 To Reader.FieldCount - 1
                    sql = sql & Reader(i) & "','"
                Next
                ' eliminar los dós últimos caracteres
                sql = Microsoft.VisualBasic.Left(sql, Len(sql) - 2)
                sql = sql & ")"

                EjecutarInsert(sql)

            End While
            Reader.Close()
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try
    End Sub

    Private Sub EjecutarInsert(ByVal sSQL As String)
        Try
            ' creamos una nueva conexión a la BD
            ' nota: Pon la misma cadena de conexión que tenías antes
            Dim cone As New SqlConnection("MiCadenadeConexion")
            cone.Open()

            Dim cdo As New SqlCommand(sSQL, cone)
            cdo.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message.ToString)
        End Try
    End Sub
  #9 (permalink)  
Antiguo 21/05/2008, 03:09
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

Muchas gracias por tu respuesta, me ayuda en gran medida, sólo una consulta, en el caso de que no quisiera pasar todos los datos, sólo algunos en concreto y asignarlos en la tabla facturación en los campos que le corresponda, como sería?
P. ejemplo de la tabla Albaran el campo IdProveedor pasarlo a la tabla FActuracion campo IdProveedor
  #10 (permalink)  
Antiguo 21/05/2008, 03:21
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Recorrer datagrid y guardar en tabla

Mira el segundo parámetro es una cadena SQL, ahí le puedes pasar los campos que quieres copiar a la otra tabla:
p.e.
GuardarEnTabla(Miconexion, "Select Campo1, campo3, campo5, From Albaran....")

Claro que, los campos de la tabla facturación tienen que estar en el mismo orden y ser del mismo tipo que los pasados a la función.

  #11 (permalink)  
Antiguo 21/05/2008, 05:15
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

Que quedaría de esta forma?
Private Sub guardarentabla(ByVal con As OleDbConnection, ByVal strqry As String)
Dim i As Integer
Try

con.Open()
Dim cmd As New OleDbCommand(strqry, con)
Dim reader As OleDbDataReader = cmd.ExecuteReader
Dim sql As String = "SELECT IDPROVEEDOR FROM ALBARAN"

While reader.Read
sql = "INSERT INTO FACTURACION("
For i = 0 To reader.FieldCount - 1
sql = sql & reader.GetName(i) & ","
Next
sql = Microsoft.VisualBasic.Left(sql, Len(sql) - 1)
sql = sql & ")values ('IDPROVEEDOR"
For i = 0 To reader.FieldCount - 1
sql = sql & reader(i) & "','"
Next
sql = Microsoft.VisualBasic.Left(sql, Len(sql) - 2)
sql = sql & ")"
End While
ejecutarinsert(sql)
reader.Close()


Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub

Me dan estos 2 errores:

Error 1 No se ha especificado ningún argumento para el parámetro 'con' de 'Private Sub guardarentabla(con As System.Data.OleDb.OleDbConnection, strqry As String)'.


Error 2 No se ha especificado ningún argumento para el parámetro 'strqry' de 'Private Sub guardarentabla(con As System.Data.OleDb.OleDbConnection, strqry As String)'.
  #12 (permalink)  
Antiguo 21/05/2008, 05:25
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

Los 2 errores ya están solucionados.
  #13 (permalink)  
Antiguo 21/05/2008, 08:09
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Recorrer datagrid y guardar en tabla

Eso seguramente era porque todavía no habrías hecho la llamada a la función.

  #14 (permalink)  
Antiguo 15/08/2008, 09:44
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

como lo harias si la tabla es una tabla de access
  #15 (permalink)  
Antiguo 15/08/2008, 09:58
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Recorrer datagrid y guardar en tabla

Mira la primera pregunta, está diciendo que trabaja con tablas de "access"

  #16 (permalink)  
Antiguo 12/09/2010, 17:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Recorrer datagrid y guardar en tabla

hola soy nuevo en esto de vb y me cuesta bastante tengo una hoja de exel y necesito importar a una base de datos los datos de la hoja. pede conectrame a la hoja puedo ver los datos en un datagrid pero nose como importar a la base de datos. en la planilla tengo las columna codigo, precio, descricion en en labase de datos en stock tengo los misos campos tengo que cargar y luego actualizar cuando me mande una planilla nueva si hay cambio en los precios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:30.