Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Update dataset? no sobre una vista!

Estas en el tema de Update dataset? no sobre una vista! en el foro de .NET en Foros del Web. Buenas a todos, os cuento el problema que se me ha planteado en vb.net. Tengo un DataGridView que trabaja sobre una vista. En este datagridview ...
  #1 (permalink)  
Antiguo 03/10/2014, 07:26
Avatar de adrirs11  
Fecha de Ingreso: diciembre-2012
Ubicación: BCN
Mensajes: 107
Antigüedad: 11 años, 4 meses
Puntos: 1
Update dataset? no sobre una vista!

Buenas a todos, os cuento el problema que se me ha planteado en vb.net. Tengo un DataGridView que trabaja sobre una vista. En este datagridview yo dejo editar una columna en la que cada fila de esta contiene un checkbox que el usuario puede editar.
En el evento validated del datagridview lo mas normal seria hacer un update del dataset, y se actualizaria perfectamente en la base de datos.

El problema es que el datagridview trabaja sobre una vista llamada vTAREA...y en las vistas no se pueden modificar. Esta vista es una consulta de la tabla TAREA, por tanto los updates los tengo que hacer sobre la tabla TAREA, para que cuando la vista recoja los datos de nuevo..esten actualizados.

Alguna solución? Yo he pensado en getchanges del datagridview para obtener los cambios que se han realizado y hacer update en un for linea por linea, pero no me aparece este método en datagridview..

Gracias de antemano.
  #2 (permalink)  
Antiguo 03/10/2014, 09:34
Avatar de adrirs11  
Fecha de Ingreso: diciembre-2012
Ubicación: BCN
Mensajes: 107
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Update dataset? no sobre una vista!

Solucionado!

Código:
Private Sub DataGridViewAgenda_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridViewAgenda.Validated

        'INI AGE
        'Declaramos un datatable y recogemos las filas modificadas del datagridview 
        Dim dtChanges As DataTable = DSOportunitat.Tables("vTareaAgenda").GetChanges

        'Comprobamos si el datatable contiene cambios (no esta vacio)
        If (Not dtChanges Is Nothing) Then

            'Hacemos un recorrido de las filas que contiene el datable con los cambios, y realizamos un update en la tabla tarea por cada uno de los cambios
            For value As Integer = 0 To dtChanges.Rows.Count - 1 Step +1

                Dim id As String = dtChanges.Rows.Item(value).Item(Me.DataGridViewAgenda.Columns(Me.PrioritariaDataGridViewCheckBoxColumn.Name).Index)

                Dim valor As Integer

                if (checkbox..... .checked = true){
                     valor = 1
                }else{
                     valor = 0
                }

                Dim query As String = "UPDATE tarea set prioritaria = " + valor + " WHERE id = " + id

                'Definición objeto Connection
                Dim conexion As OleDb.OleDbConnection
                'Definición objeto Command
                Dim cmdComando As OleDb.OleDbCommand
                'Cadena de conexion  para el objeto connection
                conexion.ConnectionString = My.Settings.LogOnConnection
                'Le pasamos la conexion al command
                cmdComando.Connection = conexion
                'Abrimos la conexion
                conexion.Open()
                'Le pasamos la query que debe ejecutar al command
                cmdComando.CommandText = query
                'Ejecutamos la query
                cmdComando.ExecuteNonQuery()
            Next
        End If
        'FIN AGE

    End Sub

Etiquetas: dataset, update
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 07:13.