Trabajar en un form, con grid, botones y checkbox

Solicito de su amable colaboración con este tema que me tiene de pelos agarrados, por fa:
Tengo un form, al cual le agregue un grid (enlazado con una tabla). Dentro del grid hay un checkbox (que corresponde a un campo logical de la tabla enlazada).
Obviamente debo intentar hacer unos filtros para que no me muestre todos los registros de la tabla (cosa que tampoco se como hacerlos), pero al visualizarlos en la grilla debo marcarlos en el checkbox; la idea es que mediante un optiongroup o algo así yo cree opciones como marcar todos, marcar algunos (por filtro) y viceversa - desmarcar todos o algunos -
Una vez hecho ese procedimiento, con un command botton, actualice esa marca en la tabla enlazada junto a otros datos que yo escribo en la grilla.. ¿Es todo esto posible?
Te agradezco la ayuda urgente es para mi proyecto de la U
PD: si le es factible tu o de algún experto, me regales el msn para preguntas en linea

2 respuestas

Respuesta
1
Para filtrar datos de una forma simple, lo puedes hacer con el comando SET FILTER, quedaría algo así
SET FILTER TO campologico = .t.
Para quitar cualquier filtro sería utilizar el comando sin condición.
SET FILTER TO
Para marcar todos los registros :
REPLACE ALL campologico  with .t.
Desmarcar todos
Replace All campologico with .f.
Estos comandos los debes poner en los eventos de los controles que utilices. Interactivechange en un optiongroup, click en un botón, etc.
Ten en cuenta que para ejecutar estos comandos debes tener previamente la tabla abierta en el área activa o hacer un SELECT Tabla antes de cada comando.
Y tras cada comando debes refrescar la vista del grid. ThisForm. Grid1. Refresh
Ello:
No se que me pasa pero soy un tarilas y no puedo hacer funcionar esta vaina...
Te explico tengo una grid que trae datos de una tbl. hasta ahí normal, dentro de estos datos hay un check para marcar como programado o no (logical)
Hice lo que tu me indicaste, pero los botones u option group no me marca o desmarca los registros de este grid. Y ya no se que más puede ser...
Te doy ejemplo claro de mi sitúa:
El grid se llama grid_prog
Esta enlazado a la tabla orden_trabajo y me trae los sgtes campos: id, ciclo, orden, trab, chk_prog, entre otros
el campo de check se llama chk_prog - (logical) - Campo que quiero que marque o desmarque en el Grid con las instrucciones o botones que me diste y que después con un botón que se llame Actualizar cambie el estado a .T. los marcados y .F. los desmarcados. Y en un campo llamado ciclo me actualice un numero que yo elijo en un combo box... Todo esto en la misma tabla orden_trabajo
Ayudame como crear esos botones u option group... con los enlaces, el select y todas esas cosas, por favor y si tengo que mirarle algo a las propiedades de los objetos creados, etc
Estoy al borde de la locura y mal genio porque no me sale...
GRACIAS sos un bacán por ayudarme
Para marcar los campos como .t. ( El grid debe tener el Recordsource = Orden_Trabajo) . El código en el click del botón marcar sería :
Sele Orden_Trabajo
Replace All chk_prog With .t.
ThisForm.grid_prog.Refresh
Para desmarcar todos sería igual cambiando el replace por :
Replace All Chk_prog With .f.
Lo del botón actualizar los que estén marcados ya estarán a .t. y a los desmarcados a .f.
En cuanto a lo del combo sería :
Sele Orden_trabajo
Replace ciclo With ThisForm.CboValores.Value
Hola de nuevo:
Mil gracias me he dado cuenta de algunos errores míos de novato...
¿Te puedo pedir más ayuda con este proyecto...? ¿Si te es posible te envío un link donde puede descargar mi proyecto y me ayudas a depurarlo por fis?
"http://www.megaupload.com/?d=CW7UOXGD"
Gracias amigo eres un rebacan y conoces mucho !
Y quizás me ayudes aun más a dejarlo bien puppy para la U
Gracias Mil Gracias Dios Te Premie !
AJH
Me lo he bajado, pero no tengo mucho tiempo, en 10 min. tengo que dejarlo.
En programación todo se puede hacer de varias formas, ahora que te funciona, es probar otras para optimizar.
Por ejemplo. En el formulario de contraseñas haces la búsqueda del usuario con un DO WHILE, siempre que recorras la tabla entera es más rápido un SCAN. Una vez encuentras el usuario y para salir del bucle y que no siga buscando utiliza el EXIT, que continua con la siguiente instrucción del bucle y te evitas un tiempo, quizá en tablas de usuarios no es mucho, pero es una buena costumbre para acelerar las búsquedas.
El fox también funciona mucho más rápido con índices en lugar de recorrer con un bucle, quedaría algo así como .
Use Usuario Index IdUsuarios && para ti el idusuarios es usuario
If Seek(Thisform.text1.value, "Usuario", "IdUsuarios") && para tí el idusuarios es usuario.
* Ha encontrado el usuario y hay que comprobar clave
Else
* El usuario no existe
Endif
Ahora tu código únicamente comprueba la clave y no el usuario, sólo poniendo clave sin usuario entraría.
Intentaré seguir mirando, si tienes alguna pregunta en concreto no dudes en hacerla, pero por favor cierra esta pregunta e inicia otra.
Listo amigo, te agradezco toda la ayuda que me has brindado y como te mencione es un proyecto que tengo que entregar a la U y pues no es muy alta mi experiencia
Que buenos consejos me puedes obsequiar
Gracias Muchas Gracias
Respuesta
1
Según lo que entiendo de tu pregunta, ese botón que marque o desmarque todos o algunos de los registros de la columna que tiene el valor lógico es simple. Lo que debes hacer es hacer por ejemplo en el caso que desees marcar todos los checkbox es
REPLACE ALL mitabla. micampologico WITH .T.
ThisForm.Grid1.Refresh() && esto refresca el grid
Otro botón permitiría guardar los cambios, debes escribir en el evento Click de dicho botón:
Tableupdate(. T.,.T."mitabla")
Para que esto funcione, la tabla debe ser abierta de forma especial, en el evento Load del form debes escribir:
USE mitabla IN 0
= CURSORSETPROP("Buffering", 5, "mitabla")  && esto es fundamenta
Respecto a lo último, yo solo respondo preguntas por este medio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas