DBCombo no refresca items agregados

Post Reply
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

DBCombo no refresca items agregados

Post by MarioG »

Hola gente:
En un Dlg tengo un DBCombo y un Button que acceder a una función para agregar/modificar la lista desplegada en el DBCombo. El problema es que luego de agregado/modificado un registro la lista no se refresca.
El código es el siguiente (utilizo tDbf)

Code: Select all

   REDEFINE DBCOMBO     ::aoDlg[_Cmb03] VAR cProfesion ID 223 UPDATE OF oFld:aDialogs[2] ;
            ALIAS       ::aoDbF[_PROF]:cAlias ;
            ITEMFIELD   "ID_Prof"   ;
            LISTFIELD   "Desc_Prof" 
            
   REDEFINE BTNBMP  ID 290 OF oFld:aDialogs[2] ;
            RESNAME "" ;
            TOOLTIP "Agregar Profesional" ;
            ACTION  oSelf:LstProfesion()         , ;
                    oSelf:aoDlg[_Cmb03]:ReFill(), ;
                    oSelf:aoDlg[_Cmb03]:Refresh()
Posteriormente probé lo siguiente:

Code: Select all

   REDEFINE DBCOMBO     ::aoDlg[_Cmb03] VAR cProfesion ID 223 UPDATE OF oFld:aDialogs[2] ;
            ALIAS       ::aoDbF[_PROF]:cAlias ;
            ITEMFIELD   "ID_Prof"   ;
            LISTFIELD   "Desc_Prof" 
            
   REDEFINE BTNBMP  ID 290 OF oFld:aDialogs[2] ;
            RESNAME "" ;
            TOOLTIP "Agregar Profesional" ;
            ACTION  if( oSelf:LstProfesion( @cProfesion )         , ;
                        oSelf:aoDlg[_Cmb03]:Insert( cProfesion )  , ;
                        oSelf:aoDlg[_Cmb03]:Modify( cProfesion ) ), ;
                    oSelf:aoDlg[_Cmb03]:ReFill(), ;
                    oSelf:aoDlg[_Cmb03]:Refresh()
Al desplegar la lista, en ninguno de _ el registro agregado/modificado, se visualiza en su nuevo estado.

Que estoy haciendo mal? (Uso FWH 2.6May05)

gracias desde ya, Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Post by Manuel Valdenebro »

¿ Has probado cambiar REfresh() por Update() ?
Un saludo

Manuel
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Post by MarioG »

Gracias por responder
De la unica forma que agrega es haciendo: oCmb:Add( cDato ), luego oCmb:Update(). El valor se agrega al final de la lista
Aunque la ayuda dice lo que hacen ::Insert(), ::Modify(), ::Refill(); ninguno de ello hace lo que dice hacer...salvo que no entienda el concepto
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Pues va a ser que no.

El DBCombo llena sus items a partir del contenido de una base de datos, eso lo hace en elmetodo constructor del control y a partir de ahi se convierte en un combo normal, sin ninguna relacion con la base de datos, es decir, no se actualiza cuando el DBF cambia.

Lo que tienes que hacer y eso manualmente, es volver a hacer un barrido de la base de dato, rellenando un nuevo array y luego con el metodo ::SETITEMS() cargar los valores nuevos.
Saludos
R.F.
User avatar
RenOmaS
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Post by RenOmaS »

Agrega este methodo a DbCombo.prg

Code: Select all

METHOD Update() CLASS TDBCombo
   Local bChange:= ::bChange

   ::bChange:= Nil
   ::Reset()
   ::Fill()
   ::Default()

   ::bChange := bChange

   Return NIl
despues es solo hace

oCmb:Update)

Saludos
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Gracias por la aportación, lo añadimos a la clase :)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Post by MarioG »

Gente; muchas gracias!
Me alegro que mi consulta sirviera para mejorar la clase! :-)

saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Post Reply