none
UpdateAll y BindingSource RRS feed

  • Pregunta

  • Hola a todos,

    estoy teniendo un problema con el UpdateAll y no entiendo muy bien a que puede ser debido.

    Tengo una serie de BindingSource enlazados a un DataSet como origen de datos.

    De la siguiente forma.

    bsFormularios.DataMember = "Formularios"
        bsFormularios.DataSource = dts
    
        bsControles.DataMember = "FK_Controles_Formularios"
        bsControles.DataSource = bsFormularios
    
        RemoveHandler bsControlesRoles.ListChanged, AddressOf bsControlesRoles_ListChanged
        bsControlesRoles.DataMember = "FK_ControlesRoles_Controles"
        bsControlesRoles.DataSource = bsControles
        bsControlesRoles.Sort = "id_control,id_rol" 'Establecemos la forma en que se ordenaran los items en el datasource
        AddHandler bsControlesRoles.ListChanged, AddressOf bsControlesRoles_ListChanged
    
        lbFormularios.DataSource = bsFormularios
        lbFormularios.DisplayMember = "nombre"
        lbFormularios.ValueMember = "id_formulario"
    
        lbControles.DataSource = bsControles 'bsControles.DataSource    
        lbControles.DisplayMember = "nombre"
        lbControles.ValueMember = "id_control"
    

    Lo que sucede es que al realizar las modificaciones. Cuando voy a guardar. Observo como en el DataSet los cambios se encuentran presentes. Pero sin embargo los unicos cambios que me registra en la BD son los ultimos realizados, eso siempre que no haga realizado alguna navegacion entre registros.

    Explico un poco los casos en los que funciona y en los que no.

    caso 1) si realizo la modificacion y directamente guardo. Se registra bien.

    caso 2)si realizo la modificacion, me cambio a otro registro y guardo. NO se registra la modificacion.

    Private Sub BotGraba_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotGraba.Click<br/>
        Me.Validate()<br/>
        bsFormularios.EndEdit()<br/>
        bsControles.EndEdit()<br/>
        bsControlesRoles.EndEdit()<br/>
        bsRoles.EndEdit()<br/>
        Dim conexion As New SqlConnection("Data Source=x;Initial Catalog=x;Persist Security Info=True;User ID=x;Password=x")<br/>
        AdaptadorManager.Connection = conexion<br/>
    <br/>
        AdaptadorManager.FormulariosTableAdapter = New CapaTipos.BingoDataSetTableAdapters.FormulariosTableAdapter<br/>
        AdaptadorManager.ControlesTableAdapter = New CapaTipos.BingoDataSetTableAdapters.ControlesTableAdapter<br/>
        AdaptadorManager.RolesTableAdapter = New CapaTipos.BingoDataSetTableAdapters.RolesTableAdapter<br/>
        AdaptadorManager.ControlesRolesTableAdapter = New CapaTipos.BingoDataSetTableAdapters.ControlesRolesTableAdapter   <br/>
    <br/>
        AdaptadorManager.UpdateAll(dts)<br/>
    <br/>
        Me.Close()<br/>
      End Sub
    

    Cuando dentro del Evento Click acceso por ejemplo al bsControlesRoles.List, me muestra un solo elemento el ultimo en el que estaba trabajando antes de guardar y que ademas es el unico que me guarda en la BD. ¿Como podria hacer que me lo guarde todo? pq realmente si observo el DataSet veo que hay varios cambios pero no me los detecta.

    Gracias de antemano.

     


    Un saludo, Dani.
    • Cambiado Enrique M. Montejo lunes, 11 de julio de 2011 17:57 acceso a datos (De:Lenguaje VB.NET)
    lunes, 31 de enero de 2011 16:50