¿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