Gustavo,
Proba quitando el static de instante
Saludos

--- Begin Message ---
Fernando, Imaginas bien, El codigo del "DbHelper" original era similar a 
este que describis.
Luego por este inconveniente lo reforme algo como esto, pero segui con 
problemas:
Me podrias orientar en alguna forma mas optima o correcta de implemetar 
algo similar?

class DbHelper
{
   public static readonly DbHelper Instance = new DbHelper( );

   private DbHelper() { }

   public cargarSentencia( )
   {
   }

   public ejecutar( )
   {
   }

   public RetornaDataSet( )
   {
    DataSet _ds = new DataSet( );
    return _ds;
   }
}

Muchas Gracias
Gustavo

Fernando Tubio escribió:
> No es evidente la estrategia que usás mirando solamente el código que 
> enviaste ya que parecen existir varios niveles de indirección hasta la 
> clase helper. En las siguiente líneas, ¿a que corresponde el primer 
> nivel this.datos?
>
>    this.datos.db.cargaSentencia()
>    this.datos.db.ejecutar();
>    this.datos.db.RetornaDataSet();
>
> Pero voy a tratar de adivinar una forma en la que podrías estar 
> devolviendo siempre el mismo DataSet, aunque si necesitás más ayuda es 
> necesario que incluyas algo del código que estás usando.
>
> No es la forma en que yo lo haría pero si tu implementación de 
> DbHelper fuera similar a lo siguiente.
>
> class DbHelper
> {
>    public static readonly DbHelper Instance = new DbHelper( );
>    private DataSet _ds = new DataSet( );
>
>    private DbHelper() { }
>
>    public cargarSentencia( )
>    {
>    }
>
>    public ejecutar( )
>    {
>    }
>
>    public RetornaDataSet( )
>    {
>        return _ds;
>    }
> }
>
> Y luego en las clases Vendedores y Movimientos se usa el helper de la 
> siguiente forma.
>
> class Vendedores
> {
>    public DbHelper db = DbHelper.Instance;
> }
>
> class Movimientos
> {
>    public DbHelper db = DbHelper.Instance;
> }
>
> Entonces ambas clases, Vendedores y Movimientos, estarían usando la 
> misma instancia de un DataSet.
>
> IMPORTANTE: estoy intentando responder a la pregunta de Gustavo de 
> como "diferentes objetos podria devolver el mismo dataset", y no 
> necesariamente la forma en que debería implementarse algo así.
>
> Saludos,
>
> Fernando Tubio
>
>
> ----- Original Message ----- From: "Gustavo" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Tuesday, April 03, 2007 11:45 AM
> Subject: [puntonet] Re: [puntonet] Re: [puntonet] Re: Re: [puntonet] 
> Re: [puntonet] Comportamiento extraño de DataSet o ComboBox
>
>
>> Eso no lo entiendo muy bien, porque para mi, siguen siendo en todo 
>> momento dos instancias diferentes....
>> Es decir no entiendo en que momento podria devolver el mismo dataset, 
>> sin son diferntes objetos.
>>
>> Fernando Tubio escribió:
>>> 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 <mailto:[EMAIL PROTECTED]>
>>>     *To:* [email protected] <mailto:[email protected]>
>>>     *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]
>>>     <mailto:[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]
>>>         <mailto:[EMAIL PROTECTED]>>
>>>         To: < [email protected] <mailto:[email protected]>>
>>>         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] <mailto:[EMAIL PROTECTED]>>
>>>         >> To: <[email protected] <mailto:[email protected]>>
>>>         >> 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] <mailto:[EMAIL PROTECTED]>>
>>>         >>>> To: <[email protected] <mailto:[email protected]>>
>>>         >>>> 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
>>>         >>>>>
>>>         >>>>
>>>         >>>>
>>>         >>>
>>>         >>>
>>>         >>
>>>         >>
>>>         >
>>>         >
>>>
>>>
>>>
>>
>>
>
>


--- End Message ---

Responder a