Clipper/FiveWin - 2 listBox, uno no se refresca

 
Vista:
Imágen de perfil de Cristian

2 listBox, uno no se refresca

Publicado por Cristian (3 intervenciones) el 23/06/2010 00:27:47
Tengo el siguiente problema, haber si alguien me ayuda
Porgramo en Clipper con FiveWin y tengo 2 ListBox dento de un dialogo
redefine listbox lbx fields alumno->nombre, alumno->curso
y
redefine listbox lbx2 fields temporal->cuota, temporal->monto

Al agregar registros (dbappend) en la tabla alumno NO SE ACTUALIZA EL LISTBOX Y ME MUESTRA REPETIDO VARIAS VECES UN SOLO ALUMNO.
Y eso q despued de grabar registro hago Lbx:refresh()

Como evito q aparezca el 1er listbox asi, (la tabla alumnos tiene efectivamente solo alumnos distintos pero listbox muestra uno solo varias veces)

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:2 listBox, uno no se refresca

Publicado por marcelo (161 intervenciones) el 23/06/2010 23:22:45
el listbox tiene una falla, al borrar o agregar registros muestra lineas repetidas.
hay que hacer olbx:gotop(), olbx:gobottom(),olbx:gotop()
y queda bien.
espero te sirva.
saludos
Marcelo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Cristian

RE:2 listBox, uno no se refresca

Publicado por Cristian (3 intervenciones) el 23/06/2010 23:32:19
Te agradezco tu respuesta, lo voy a probar, pero ayer hice algo parecido mirando otras consultas hechas en este sitio, de ir al top, al final y aun asi no me refresco nada. Si lo deseas y tienes tiempo, te puedo enviar el codigo a tu correo???

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:2 listBox, uno no se refresca

Publicado por Fernando Morales (23 intervenciones) el 29/06/2010 17:40:32
ALUMNOS->(dbAppend())
ALUMNOS->(dbCommit())
ALUMNOS->(dbRUnLock())
oBrwAlumnos:refresh()
oBrwAlumnos:upStable()
oBrwAlumnos:SetFocus()

Dime si te ha funcionado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No hay caso, 2 listBox, uno no se refresca

Publicado por Cristian (1 intervención) el 30/06/2010 18:24:48
Agradezco mucho tu aporte, pero no hay caso, agregue lo q me enviaste pero sigue repitiendo el alumno tantas veces como pagos hay en la ventana de cancelaciones.. Gracias de todas maneras.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:No hay caso, 2 listBox, uno no se refresca

Publicado por Fernando Morales (23 intervenciones) el 01/07/2010 09:43:18
pega el código para verlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Cristian

ENCONTRE LA SOLUCION!!, puede servirles a Uds.

Publicado por Cristian (3 intervenciones) el 05/07/2010 03:27:16
Yo cree anteriormente un temporal llamado AuxAlu y luego hice un Define ListBox fields los campos de ese temporal. y Posteriormente llenaba ese temporal.... Pero.... aparecia siempre el ultimo alumno repetido varias veces. Intente con dbgotop, dbgobottom etc. como muy amablemente me dijeron las personas del foro para ayudarme, pero aun asi no resultaba nada. siempre duplicaba varias veces un alumno y el resto de alumno no mostraba nada. Pero encontre la solucion despues de varios fracasos....

Solucion: Apenas se cree el Temporal debe llenarse con los datos y DESPUES HACER EL LIST BOX COMO LO HICE ACA. q tuve q usar un segundo Temporal (AuxPag) para poder llenar los datos del Temporal (AuxAlu)

y funciona


Local oPag
Local obtn1,obtn2,obtn3
nMatriz := { { "Mae_Cur" , "C", 04, 0 }, ;
{ "Rut" , "C", 11, 0 }, ;
{ "Marca" , "C", 01, 0 }, ;
{ "Nombre" , "C", 50, 0 }, ;
{ "Beca" , "N", 08, 0 }, ;
{ "Valcta" , "N", 08, 0 }, ;
{ "ValTot" , "N", 08, 0 }, ;
{ "Saldo" , "N", 08, 0 }, ;
{ "Cance" , "N", 08 , 0 } }
NomBase := Abrir_Aux( nMatriz, "AuxPag", aVarPublic )

AuxAlu->(dbgotop())
i:=1
Do While AuxAlu->(!Eof())
AuxPag->(dbappend())
AuxPag->Mae_Cur:= AuxAlu->Mae_Cur
AuxPag->Nombre := AuxAlu->Nombre
AuxPag->Rut := AuxAlu->Rut
AuxPag->Valcta := AuxAlu->Valcta
AuxPag->Beca := AuxAlu->Beca
AuxPag->Cance := AuxAlu->Cance
AuxPag->ValTot := AuxAlu->ValTot
AuxPag->Saldo := AuxAlu->Saldo
AuxPag->Marca := if(AuxAlu->Saldo > 0,"*","")

*if AuxAlu->Saldo > 0
* AuxAlu->Marca:="*"
*endif
i++
AuxAlu->(DBSkip())
Enddo
AuxAlu->(dbgotop())
*
Define Dialog odl2 Resname "CagCancela"
AuxPag->(dbgotop())
Redefine ListBox oPag;
FIELDS AuxPag->Marca,AuxPag->Nombre,;
alltrim(str(AuxPag->Saldo)) Id 101 Of odl2;
HEADERS "Marca","Nombre","A Pagar";
SIZES 30, 185, 40

Y asi no repite la gente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ENCONTRE LA SOLUCION!!, puede servirles a Uds.

Publicado por Gustavo Alvarez (20 intervenciones) el 21/07/2010 19:33:41
si quieres actualizar o refrescar un listbox, solo tienes que poner las siguientes instrucciones y funciona bien calidad, Olistbox:UpsTable(),Olistbox:Refresh(), eso lo encontre en este sitio,

perdon pero no me habia metido al foro,

Gustavo Alvarez
Guatemala,

espero te sirva para futuros listbox.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar