Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2005
SMTZ SMTZ is offline
Miembro
 
Registrado: nov 2003
Posts: 225
Poder: 21
SMTZ Va por buen camino
Question Actualizar un ListBox relacionado con una base de datos

Hola, tengo un ListBox que ataca a una BD de Oracle y ocurre que cuando hago un insert en la BD, no se me actualiza el ListBox. El codigo fuente que utilizo es el siguiente:

Código:
With MiListBox.BindingContext.Item[EcodomesticaDataSet, 'usuarios'] as CurrencyManager Do Refresh;
MiListBox.Refresh;
Previamente, he relacionado el ListBox con la BD:

Código:
With MiListBox Do
Begin

   DataSource := EcodomesticaDataSet;
   DisplayMember := 'usuarios.IDUSUARIO'; //Tabla.Campo
   
End;
¿Sabeis cuál puede ser el error?

Gracias.
Responder Con Cita
  #2  
Antiguo 12-11-2005
SMTZ SMTZ is offline
Miembro
 
Registrado: nov 2003
Posts: 225
Poder: 21
SMTZ Va por buen camino
Post Insert

Por cierto, el insert lo hago de la siguiente manera (por si pudiera causar algún error en el posterior refresco del listbox):

Código:
//Se entiende que el Adapter ya está activo y el dataset relacionado
   
Conexion.Open; // Conexión es del tipo Borland.Data.Provider.BdpConnection;

   ComandoSQL := 'insert into usuarios (Campo1,Campo2) values ('Dato1','Dato2'); //ComandoSQL es un String;

   ComandoInsertar.CommandText := ComandoSQL; //ComandoInsertar es una variable tipo Borland.Data.Provider.BdpCommand

   Transaccion := EcodomesticaConexion.BeginTransaction; //Transaccion es del tipo Borland.Data.Provider.BdpTransaction

   ComandoInsertar.ExecuteNonQuery;
   Transaccion.Commit;
   Conexion.Close;
Este código se abre en una ventana modal (dialog) que, al cerrarse, debe actualizar el listbox de otra ventana ya abierta, tal y como he puesto en el mensaje anterior, pero no funciona. Tampoco ha funcionado lo siguiente:

Código:
With MiListBox Do
Begin

   DataSource := NIL;
   DataSource := MiDataSet;
   DataMember := Tabla.Columna;
   Refresh;

End;
Responder Con Cita
  #3  
Antiguo 13-11-2005
SMTZ SMTZ is offline
Miembro
 
Registrado: nov 2003
Posts: 225
Poder: 21
SMTZ Va por buen camino
Angry La BD si se actualiza el ListBox no

Hola, comentar que también he comprobado que en la base de datos sí se actualizan los nuevos datos pero no se reflejan en el ListBox.

También he probado el siguiente código tras realizar el insert:

Código:
MiAdaptador.Update(MiDataSet.Tables['usuarios']); MiDataset.AcceptChanges;
With BindingContext[MiDataSet, 'usuarios'] as CurrencyManager Do Refresh;
{MiListBox.DataSource := NIL;
MiLstBox.DataSource := MiDataSet;}
MiListBox.DisplayMember := 'usuarios.IDUSUARIO';
MiListBox.Refresh;
pero el ListBox no refleja los cambios (entiendo que el dataset está actualizado al llamar al metodo "update" del adaptador).

Un saludo.
Responder Con Cita
  #4  
Antiguo 13-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No tengo el placer de conocer a Oracle, ni tampoco a ese Listbox, pero sin duda, el tema está en refrescar los items, vaciandolos y despues asignándole de nuevo el datasource.

MiListbox.Refresh, unicamente pintará de nuevo el listbox, pero no añade / cambia los elementos de la lista.

Siento no poder ayudarte más.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 13-11-2005
SMTZ SMTZ is offline
Miembro
 
Registrado: nov 2003
Posts: 225
Poder: 21
SMTZ Va por buen camino
He probado otras cosas

Gracias por la ayuda. También he probado MiListBox.Update. En teoría, si hagu un update del adaptador, al estar el listbox ligado a la base de datos (binding, datasource), el listbox debería actualizarse automaticamente, pero no lo hace.
Responder Con Cita
  #6  
Antiguo 14-11-2005
SMTZ SMTZ is offline
Miembro
 
Registrado: nov 2003
Posts: 225
Poder: 21
SMTZ Va por buen camino
Solución

Para quien le interese. Una solución puede ser esta:


Código:
MiAdaptador.SelectCommand.CommandText = "SELECT * FROM MiTabla ";
MidataSet.Clear;
MiAdaptador.Fill(dataSet1, "Books");
Se entiende que ya se la he hecho el "bind" a los controles que visulizan los datos de la base de datos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:30:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi