FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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; Código:
With MiListBox Do Begin DataSource := EcodomesticaDataSet; DisplayMember := 'usuarios.IDUSUARIO'; //Tabla.Campo End; Gracias. |
#2
|
|||
|
|||
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; Código:
With MiListBox Do Begin DataSource := NIL; DataSource := MiDataSet; DataMember := Tabla.Columna; Refresh; End; |
#3
|
|||
|
|||
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; Un saludo. |
#4
|
||||
|
||||
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. |
#5
|
|||
|
|||
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.
|
#6
|
|||
|
|||
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"); |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|