FoxPro/Visual FoxPro - problemas con un GRID

   
Vista:

problemas con un GRID

Publicado por victor perez (137 intervenciones) el 05/04/2013 00:20:35
Estimados foreros,

Tengo un form que contiene un GRID donde se despliegan unos datos.

Todo funciona de maravillas...cuando quiero anexar nuevos datos ,el grid los acepta pero al momento de querer cancelar la operacion, es decir, no guardar la informacion a la base de datos, todo el GRID desaparece y solo deja el espacio asignado con un fondo de color verde claro.

Lo que quiero que suceda es que cuando CANCELAMOS se muestre exacamente el grid, los botones, los textbox como cuando iniciamos el proceso de introducir datos (es decir, enabled = .F.)

NO he podido lograrlo...la unica forma que he conseguido es haciendo que al hacer Click en cancelar poner un Thisform.release y luego ejecutar de nuevo el formulario...el problema es que cuando hago esto, me quedan dos forms: en la parte de atras, el form que acabo supuestamente de cerrar, y en la parte frontal la ejecucion del nuevo formulario.

Que puedo hacer? No se como resolver este conflicto.

Este problema lo he tenido desde siempre pero hasta hoy me percate que el form supuestamente cerrado quedaba detras del otro.

Saludos y espero sus comentarios.


Victor
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

problemas con un GRID

Publicado por Fidel (558 intervenciones) el 05/04/2013 01:48:10
Habría que ver el RecordSource del control Grid y el código del botón Cancelar.

Si estás trabajando con
Thisform.grid1.recordSource='MiTabla'

SET MULTILOCKS ON
lSuccess=CURSORSETPROP("Buffering", 5, "MiTabla")
agregas varios registros a la tabla
y haces
SELECT MITABLA
TableRevert(.t.)
el control grid debería actualizarse inmediatamente quitando los registros descartados.

Si el control grid se asocia a un cursor y el cursor se cierra, el control grid queda desenlazado. Si vuelves a crear el cursor, debes reestablecer el RecordSource.
Si el control grid se asocia a una tabla temporal y ejecutas DELETE ALL y PACK para limpiar la tabla, el control se desenlaza porque PACK cierra la tabla. Debe utlizarse ZAP para limpiar la tabla temporal ó cursor.

También hay que ver si se utilizan condiciones de filtro que puedan quedar fuera de alcance (incluye los SET RELATION).

En cuanto al formulario que aparece detrás, parece que en realidad no sucede el Thisform.release, sino que el formulario se desenlaza pero no se libera. Algo tiene que estar mal en el código de Cancelar.
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

problemas con un GRID

Publicado por victor perez (137 intervenciones) el 05/04/2013 17:17:06
Hola Fidel,

Te explico lo que hace mi formulario. Es un formulario para agregar, editar e imprimir citas medicas.

Cuando se ingresa al formulario hay solo un campo con la fecha y el GRID que ambos estan ENABLED=.F.

Luego, hay cuatro botones...Nuevo/Editar, Imprimir, GRabar y CAncelar, Salir...los unicos botones que se pueden activar son Nuevo/editar, Imprimir y Salir.

Al hacer Click en Nuevo, se activa el campo de texto para la fecha y el GRID.

Se introduce la fecha para la cual se quieren abrir las citas y se hace una conexion a la TAbla de Citas para evaluar si hay o no citas abiertas para ese dia....esto se carga a un Cursor.

Si el cursor tiene registros...significa que ya hay citas y se llena el GRID.

Si el cursor no tiene registros...se pregunta si se quiere abrir citas para ese dia...al decir que SI, entonces el sistema abre espacio para 10 citas ...y te llena el GRID con estas Citas Vacias...y te permite editar el grid introduciendo la informacion para cada una de las Citas para esa fecha.

Hasta aqui, todo bien...el asunto es si Yo hago click en Nuevo, introduzco la fecha y se despliega la informacion en el GRID (ya sea que estamos abriendo citas nuevas o que desplegamos las que ya estan para la fecha)...y decido No hacer nada y Cancelar la operacion...alli es donde estriba el problema.

En resumen el REcordsource del GRid es un Cursor.

Al final, si decido GRABAR la informacion entonces alimento la TABLA con la informacion guardada en el cursor. Si previamente habian citas para esa fecha...primero las elimino de la tabla y luego les hago un Update para la fecha con la nueva información...(Aqui no he pensado en otra opcion para hacer el update de la tabla solo con la informacion modificada...por eso decido eliminar la informacion para la fecha y agregarla nuevamente con toda la informacion del cursor.)

TE anexo lo que está en Cancelar.Click

1
2
3
4
5
6
7
8
9
10
11
12
13
Thisform.pgfFicha.Page1.txtFchInit.value=ctod("  /  /  ")
Thisform.pgfFicha.Page1.txtFchINit.enabled=.F.
Thisform.pgfFicha.Page1.txtdia.value=" " && esto me guarda el dia de la semana
 
 
THISFORM.CONECTA  && aqui evitamos que el formulario sea abierto para edicion en mas de una estacion
SQLEXEC(LNHANDLE,"UPDATE TABIERTO SET FORMA=0")
SQLDISCONNECT(LNHANDLE)
 
 
Thisform.release
 
Do Form CtlCtaGin  && este es el form maestro.


Un saludo y espero me puedas ayudar.
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

problemas con un GRID

Publicado por victor perez (137 intervenciones) el 05/04/2013 20:51:47
Hola,

Ya resolvi el problema....efectivamente tenia que reconstruir el GRID y ademas notificarle que el REcordsource fuese en blanco...y hacer un refresh del grid.

Ya todo resuelto.

Saludos y 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