Hola Diego,

Seguro, pero ese no era mi punto. Partiendo del hecho que el código tiene 
problemas entonces es necesario encontrar la causa. En mi mi primer mensaje 
cuando mencioné que  "algo huele mal en el código", lo dije porque si se crea 
una DataSet para luego sobreescribirlo sin haberlo utilizado,  entonces es 
necesario evaluar si realmente se está operando con la instancia correcta. Como 
el origen del DataSet es una clase helper compartida por las dos clases 
involucradas en el problema entonces no me sorprendería que el helper estuviera 
devolviendo siempre la misma instancia. 

Saludos,

Fernando Tubio

----- Original Message ----- 
  From: Diego Jancic 
  To: puntonet@mug.org.ar 
  Sent: Tuesday, April 03, 2007 10:46 AM
  Subject: [puntonet] Re: Re: [puntonet] Re: [puntonet] Re: [puntonet] 
Comportamiento extraño de DataSet o ComboBox


  Hola Fernando!,
  Ahi puede haber una perdida en performance, pero el bug no esta ahi... si se 
sobreescribe una referencia de un objeto que no se uso nunca no pasa nada!

  Salu2!

   
  On 4/3/07, Fernando Tubio <[EMAIL PROTECTED]> wrote: 
    Este código tiene el mismo problema que el que enviaste anteriormente.

    public DataSet LlenaComboBox() 
    {
               DataSet dsSalida = new DataSet();  <== SE CREA UN DATASET
               this.datos.db.cargaSentencia("SELECT ID,NOMBRE from
                   VENDEDORES WHERE ESTADO<>1 ORDER BY NOMBRE"); 
               this.datos.db.ejecutar();
               dsSalida = this.datos.db.RetornaDataSet(); <== PERO SE DEVUELVE
                                                 UNA INSTANCIA DIFERENTE!!!!
               return dsSalida; 
    }


    Saludos,

    Fernando Tubio


    ----- Original Message -----
    From: "Gustavo" <[EMAIL PROTECTED]>
    To: < puntonet@mug.org.ar>
    Sent: Tuesday, April 03, 2007 10:17 AM
    Subject: [puntonet] Re: [puntonet] Re: [puntonet] Comportamiento extraño de
    DataSet o ComboBox


    > La verdad que ya lo cmabie de forma bastantes veces, pero en este 
momento, 
    > esta de manera que el dataset que se retorna es local al metodo, asi:
    >
    > public DataSet LlenaComboBox()
    >        {
    >            DataSet dsSalida = new DataSet();
    >            this.datos.db.cargaSentencia ("SELECT ID,NOMBRE from VENDEDORES
    > WHERE ESTADO<>1 ORDER BY NOMBRE");
    >            this.datos.db.ejecutar();
    >            dsSalida = this.datos.db.RetornaDataSet();
    >            return dsSalida; 
    >        }
    >
    > Tambien por este mimso tema, modifique this.datos.db.RetornaDataSet();
    > hize un metodo que retorna el dataset de la misma manera, antes era un
    > dataset publico y y lo asignaba directamente, pero para aislarlo mas, 
    > llegue a eso.
    >
    > Fernando Tubio escribió:
    >> ¿Como obtienen sus respectivos DataSets las clases Vendedores y
    >> Movimientos?
    >> Lo hacen sobre una variable local y creando una nueva instancia por cada 
    >> llamado a Llenar( ). Por ejemplo,
    >>
    >> public DataSet Llenar( )
    >> {
    >>    ...
    >>    DataSet ds = new DataSet();
    >>    ...
    >>    // sigue código para llenar el DataSet 
    >> }
    >>
    >> O quizás lo hacen a través de otro método que devuelve el DataSet(). Por
    >> ejemplo,
    >>
    >> public DataSet Llenar( )
    >> {
    >>    ...
    >>    DataSet ds = Helper.GetDataSet();
    >>    ...
    >>    // sigue código para llenar el DataSet
    >> }
    >>
    >> En este segundo caso entonces dependerá de como fue implementado el
    >> método
    >> GetDataSet( ), pero ambas clases podrían compartir una misma instancia
    >> del
    >> DataSet, si por ejemplo la implementación fuera la siguiente.
    >>
    >> static class Helper
    >> { 
    >>    public static DataSet _ds = new DataSet();
    >>
    >>    public static GetDataSet( )
    >>    {
    >>        return _ds;
    >>    }
    >> }
    >>
    >> Estos son solo ejemplos. Probablemente esto no tenga nada que ver con tu 
    >> código pero a esto me refiero con que podrían estar compartiendo la misma
    >> instancia de DataSet.
    >>
    >> Saludos,
    >>
    >> Fernando Tubio
    >>
    >> ----- Original Message ----- From: "Gustavo" < [EMAIL PROTECTED]>
    >> To: <puntonet@mug.org.ar>
    >> Sent: Tuesday, April 03, 2007 9:24 AM
    >> Subject: [puntonet] Re: [puntonet] Re: [puntonet] Comportamiento extraño 
    >> de
    >> DataSet o ComboBox
    >>
    >>
    >>> Que tal Fernando, la idea era usar el dataset que devuelve llenar para
    >>> cargar el combo.
    >>> No creo que tengan relacion, pero como seria que la clase vendedores y 
    >>> movimientos compartan una misma instancia de DataSet?
    >>> Muchas Gracias
    >>>
    >>> Fernando Tubio escribió:
    >>>> Algo huele mal en el código que enviaste. Primero se crea un DataSet, 
    >>>>
    >>>>> this.dsVendedores = new DataSet();
    >>>>
    >>>> e inmediatamente se lo sobreescribe con un llamado al método Llenar()
    >>>>
    >>>>> this.dsVendedores = this.vendedores.Llenar();
    >>>>
    >>>> Idem para la otra clase.
    >>>>
    >>>>> this.dsMovimientos = new DataSet();
    >>>>> this.dsMovimientos =
    >>>>> this.movimientos.Llenar(Convert.ToInt32(this.vendedor.SelectedValue));
    >>>>
    >>>> El resultado es que el DataSet usado como data source del ComboBox es
    >>>> el 
    >>>> devuelto por la clase Vendedores, y si bien esto en sí no tiene nada de
    >>>> malo, sospecho que no es lo que te proponías. Si tu intención es que el
    >>>> método Llenar() cargue el DataSet creado previamente entonces deberías 
    >>>> modificar dicho método para tomar el DataSet como parámetro. Esto
    >>>> también
    >>>> sería más consistente, por lo menos en lo que respecta a nombres de
    >>>> método, 
    >>>> con el patrón usado en los TableAdapters de NET 2.0, donde se pueden
    >>>> generar
    >>>> métodos que devuelven un objeto nuevo cuyo nombre por default comienza
    >>>> con 
    >>>> Get...(), como también métodos que operan sobre un objeto recibido como
    >>>> parámetro y que por default comienzan con Fill...(), o en tu caso
    >>>> Llenar().
    >>>> 
    >>>> Habría que ver el código de las clases Vendedores y Movimientos para
    >>>> decir
    >>>> donde está el problema, pero sospecho que deben compartir una misma
    >>>> instancia de DataSet. 
    >>>>
    >>>> Saludos,
    >>>>
    >>>> Fernando Tubio
    >>>>
    >>>> ----- Original Message ----- From: "Gustavo" < [EMAIL PROTECTED]>
    >>>> To: <puntonet@mug.org.ar>
    >>>> Sent: Friday, March 30, 2007 7:21 PM
    >>>> Subject: [puntonet] Comportamiento extraño de DataSet o ComboBox 
    >>>>
    >>>>
    >>>>> Buenas Tardes, a ver si me pueden ayudar, si a alguien le sucedio algo
    >>>>> parecido, me sucede algo extraño:
    >>>>> Cree una serie de clases para la manipulacion de datos de las tablas 
    >>>>> de
    >>>>> la
    >>>>> aplicacion.
    >>>>> Una de ellas la uso para traer de la base de datos los vendedores en
    >>>>> un
    >>>>> dataset que uso de transporte y luego llenar un ComboBox de la 
    >>>>> siguiente
    >>>>> manera:
    >>>>>
    >>>>> this.vendedores = new Vendedores();
    >>>>> this.dsVendedores = new DataSet();
    >>>>> this.dsVendedores = this.vendedores.Llenar();
    >>>>> this.vendedor.DisplayMember = "NOMBRE";
    >>>>> this.vendedor.ValueMember = "ID";
    >>>>> this.vendedor.DataSource = this.dsVendedores.Tables[0].DefaultView;
    >>>>>
    >>>>> Hasta aca todo bien, se llena el combo correctamente teniendo el campo
    >>>>> ID
    >>>>> como value y el Nombre en Display. 
    >>>>> Pero Cuando Creo otro objeto de otra clase similar pero para otra
    >>>>> entidad,
    >>>>> al llamar al metodo this.movimientos.Llenar me rompe el combobox de
    >>>>> vendedores, mantiene su cantidad de registros, pero dice 
    >>>>> System.DataRow,
    >>>>> como si se perdieran sus datos.....
    >>>>>
    >>>>> this.movimientos = new Movimientos();           this.dsMovimientos =
    >>>>> new
    >>>>> DataSet();
    >>>>> this.dsMovimientos =
    >>>>> this.movimientos.Llenar(Convert.ToInt32(this.vendedor.SelectedValue));
    >>>>> <<<< Rompe 
    >>>>>
    >>>>> No entiendo que es lo que sucede ya que son dos objetos diferentes.
    >>>>> los
    >>>>> datasets no tienen relacion alguna y no son referenciados. 
    >>>>> A su vez, la clase Movimientos y Vendedores usan otra clase, que se
    >>>>> usa
    >>>>> de
    >>>>> coneccion a la base de datos, quizas venga por ahi, pero no encuentro 
    >>>>> nada.
    >>>>> Espero que se entienda el problema, Me podran dar alguna ayuda?
    >>>>>
    >>>>> Saludos
    >>>>> Gustavo
    >>>>> 
    >>>>
    >>>>
    >>>
    >>>
    >>
    >>
    >
    >




Responder a