|
Hola, hace poco consulte en la lista por este mismo tema, he intentaron
ayudarme. Hice varias pruebas y lei algunos articulos, pero sigo sin poder solucionarlo ni entender el problema, detallo mas codigo, a ver si alguien me puede ayudar, esta un poco resumido, pero esta la idea y falla completa. En la muestra hay 4 Clases: Clientes: para manejar la estructura de clientes, solo se usa en el ejemplo el metodo LlenarComboBox() Movimientos: para manejar la estructura de Movimientos, solo se usa en el ejemplo el metodo Llenar() Firebird: Clase para la manipulacion de la DB, solo alli se crean nuevas instancias del DataSet. Vinculo: Clase Solo apunta a un archivo u otro, se armo separada. Necesito, poder conservar ambos datasets independientes y poder trabajarlos simultanemante. Porque si tanto en la clase movimientos como clientes, se crea un nuevo objeto de la clase Vinculo, y este a su vez crea nueva instancia de la clase Firebird para cada uno de ellos, los datasets no son instancias diferentes? Gracias Resumen Codigo de las clases: Empiezo un formulario (solo tiene un combobox) public partial class Form1 : Form { public Clientes clientes; public DataSet dsClientes; public Movimientos movimientos; public DataSet dsMovimientos; public Form1()... void Form1Load(object sender, EventArgs e) { this.clientes = new Clientes(); this.dsClientes = this.clientes.LlenarComboBox(); this.cliente.DisplayMember = "NOMBRE"; this.cliente.ValueMember = "ID"; this.cliente.DataSource = this.dsClientes.Tables[0].DefaultView; this.movimientos = new Movimientos(); } void ClienteSelectedIndexChanged(object sender, EventArgs e) { /// Al llamar a este metodo se corrompe el combobox this.cliente, llenandolo de registros con System.Data.DataRow) this.dsMovimientos = this.movimientos.TraeMovDelCliente(Convert.ToInt32(this.arti.SelectedValue)); } } ///////////////////////////////////////////////////////////// public class Clientes { public Vinculo datos; public Clientes() { this.datos = new Vinculo("datos"); } public DataSet LlenarComboBox() { this.datos.db.cargaSentencia("SELECT ID,NOMBRE from CLIENTES WHERE ESTADO<>1 ORDER BY NOMBRE"); return this.datos.db.EjecutarQueryDS(); } } ////////////////////////////////////////////////////////// public class Movimientos { ... public Vinculo datos; public Movimientos() { this.datos = new Vinculo("datos"); .... } public DataSet Llenar(int idCliente) { this.sql = "SELECT * from MOVIMIENTOS WHERE ESTADO<>1 AND ID_CLIENTE=" + idCliente + " ORDER BY ID"; this.datos.db.cargaSentencia(this.sql); if (this.debugLevel > 2) { this.log.Crear(this.sql,"SQL-LLENA-MOVIMIENTOS"); } return this.datos.db.EjecutarQueryDS(); } ////////////////////////////////////////////////////////////// public class Firebird { ... public DataSet ds; public Firebird (string baseDatos, string usuario, string clave, byte dialecto, string servidor) { ... } public DataSet EjecutarQueryDS() { this.ds = new DataSet(); try { this.abrir(); this.adaptador.SelectCommand = this.comando; this.adaptador.Fill(this.ds); this.cerrar(); } catch (Exception ex) { this.error = ex.ToString(); //ret = 1; } return this.ds; } } /////////////////////////////////////////////////////////// public class Vinculo { public Firebird db; public Vinculo(string puntero) { this.bdConfiguracion = new Configuracion("Sistema"); this.usuario = this.bdConfiguracion.LeeConfiguracion("BASE","usuario","USUARIO"); this.clave = this.bdConfiguracion.LeeConfiguracion("BASE","clave","xxxxxxxxx"); this.dialecto = Convert.ToByte(this.bdConfiguracion.LeeConfiguracion("BASE","dialecto","3")); this.servidor = this.bdConfiguracion.LeeConfiguracion("BASE","servidor","192.168.1.7"); switch (puntero) { case "datos": this.camino = this.bdConfiguracion.LeeConfiguracion("BASE","caminoDatos","/datos/bde/base_datos.gdb"); break; case "cfg": this.camino = this.bdConfiguracion.LeeConfiguracion("BASE","caminoCfg","/datos/bde/base_cfg.gdb"); break; default: this.camino = this.bdConfiguracion.LeeConfiguracion("BASE","caminoDatos","/datos/bde/base_datos.gdb"); break; } this.db = new Firebird(this.camino, this.usuario, this.clave, this.dialecto, this.servidor); } } |
- [puntonet] Perdida de DataSet Gustavo
- [puntonet] Perdida de DataSet Fernando Tubio
