none
dudas con el metodo clear de dataset RRS feed

  • Pregunta

  • que es lo que hace realmente el metodo clear de dataset?, la documentacion dice que se eliminan todos las filas de todas las tablas, pero no explica que pasa si existen enlaces de datos a controles de una forma

    en mi caso tengo un dataset que edito en una forma y grabo los cambios en la base de datos con dataadapters para cada tabla del data set ,pero si existe un error de concurrencia quero llenar otra vez el dataset con los datos que estan en la base de datos, el metodo fill de dataadater agrega o actualiza filas a un dataset pero yo quiero eliminar las filas que existen actualmente en el dataset y llenarlo otra vez

     utlizando el siguiente codigo

     /*

    creo un datadapter, dataset, y agergo los Comandos correspondientes al datadapter para select,insert,update y delete

    */

    dataadapter.Fill(dataset); /* select * from xxx where clave=1*/

    ...

    /*

    agrego enlaces a controles de texto con un bindingsource

    */

    /*

    //hago cambios en la forma

    */

    /* forzo un error de concurrencia modificado la base manualmente en otro programa/*

    //trato de grabar en la base de datos

    try {

         bindingsource.EndEdit();

        dataadapter.Update(dataset);

        this.Close() /* la forma */

     }

    catch (DbConcurrencyException) {

      dataset.Clear;

     dataadapter.Fill(dataset);

    MessageBox,Show("Registro modificado", Vea Cambios);

    }

    catch(Exception ex) {

      MessageBox.Show(ex.ToString());

    }

     si no utilizo dataset.Clear() todo funciona bien pero si utilizo dataset.Clear() al parecer se pierden los enlaces con los controles (no se muestran los valores correctos) en los controles

    alguien sabe porque?

    como podria yo eliminar las filas que existen en un dataset sin que se rompan los enlaces con el bindingsource para volverlo a llenar con datos de una base de datos?

     

     

    lunes, 9 de julio de 2007 2:44

Todas las respuestas

  • Hola moralesramon:

     

    No trabajo habitualmente con winForms pero podrías recorrerte la colección de tablas del DataSet y borrar el conjunto de filas de cada tabla, algo así:

     

    Code Snippet

    for tabla in tablas

         tabla.Rows.Clear()

     

    Salu2

     

    Colabora con el foro: Si la respuesta te es de utilidad marca la pregunta como respondida.

    Luis Ruiz Pavón

    MCP - MCTS

    Blog: http://geeks.ms/blogs/lruiz

    lunes, 9 de julio de 2007 6:00
  • Gracias por tu ayuda

    de hecho, el codigo que me sugieres hace los mismo que dataset.clear()

    lo que si note es que, antes de dataset.clear, la propiedad IsBindingSuspended del bindingsource es true; despues de dataset.clear() se vuelve false y no puedo volverla true ni con ResetBinding o ResumeBinding

    jueves, 12 de julio de 2007 1:58