Uso de check en grid(FoxPro).

Tengo un formulario que envía correos a usuarios, en ese formulario tengo un grid alimentado por una tabla que tiene el nombre del usuario y otra columna con checkbox.

Quiero enviar solamente correos a los usuarios seleccionados.

¿Cómo puedo validar que sólo a los seleccionados?.

Cuando les envía a los usuarios los nombres desaparecen del grid y ya no se deben poder enviar correos a los que tengan .T. En el campo de la tabla.

AYUDA! Urgente!

1 respuesta

Respuesta
1

Espero poder ayudarte! :) Si en tu grid ya insertastes el control CHECKBOX, establece la propiedad SPARSE = .T. en la pestaña data, en las propiedades de dicho check! Este control debes enlazarlo con un campo de tu tabla! EN dicho campo almacena un valor numérico, ya sea 0 o 1. Cuando creas la tabla y la enlazas al control, el campo del check debe estar vacío o en 0 valores. Cuando marques el check, cambia ese valor 0 a 1. Y si lo desmarcas, cambia el valor 1 a 0.

SI el check esta marcado, su valor en tabla sera = 1

Si el check esta desmarcado, su valor en tabla sera = 0

¿Por qué todo esto? Fácil... :) es una buena manera de validar registros o "rows" de tu tabla! Podrías hacer esto, por ejemplo...:

**En el evento CLICK() del control check, establece un código como este:

SELECT tutabla

**--Asignamos valor

DO CASE

CASE THISFORM.Grid1.Column1.Check1.Value = 0 &&desmarcamos check

REPLACE campodelcheck WITH 1

CASE THISFORM.Grid1.Column1.Check1.Value = 1 &&marcamos check

REPLACE campodelcheck WITH 0

ENDCASE

**--

Luego, según tu aplicacion, ya podes validar los registros que tengan marcación. Dices que envías los correos... entonces (aunque no se como es tu código) puedes "decirle" a tu aplicación que selecciones los registros que tienen el campo del check con valor 1 y que hagan lo que deseas... y luego aplica un DELETE para dichos registros y así ya no aparezcan en el grid. Coloca en el INIT() del form, la instrucciion SET DELETED ON y así bastara con una simple marcación para eliminación (DELETE) para que ya nadie pueda usar los registros que marcastes y procesastes! Ves!

Cualquier cosa, me avisas! Estoy a tus ordenes!

Saludos! :)

Desde Managua, Nicaragua

Un abrazo!

Ravenn :D :D :D

Gracias por tu respuesta. Me ayudó para otro formulario que estoy haciendo....pero busco otra cosa con ese formulario. Necesito crear un cursor,

create cursor cCursor_auto_vaca(cod_empleado N(10),nombre C(20),desde D,hasta D,dias_aprob N(4),aprob_sup L(3))

y llenarlo con los datos de una tabla. Utilicé insert into...pero el cursor quedó read-only......no puedo utilizar la función readwrite, por que estoy utilizando foxpro 5 y esa función está creo que para foxpro 7 en adelante. No puedo migrar a otro foxpro ya que solamente ésta versión tengo que utilizar.

Hay alguna forma de crear el cursor y llenarlo para que sea de readwrite?.

Gracias por la ayuda.

Retiro el comentario de arriba....me sirvió mucho tu respuesta.

Te cuento lo que me sucede ahora. En el mismo formulario, con el mismo grid.

el grid lo lleno de una tabla la cuál tiene un campo de autorizados(columna del grid)

éstos los filtro por .F. y esos son los datos que se muestran en el grid. Cuando chequeo uno, y presiono enviar, no sé cómo enviar solo a los chequeados. ya que en la tabla siguen apareciendo los .T. y los .F.......de hecho cuando chequeo uno y el check pierde el foco, automáticamente se actualiza el grid...cosa que no quisiera que pase.....(para que sirve el sparce=.T.?)

Muchas gracias por tu ayuda.

Ohhh! Me equivoque! Lo siento! En la columna donde tienes el check, en DATA en las propiedades... SPARSE = .F.

Lo siento! :(

Ahora... un tip respecto a como crear el cursor y rellenarlo con los datos de una tabla sin tener que usar INSERT INTO (lo cual... podría, no mucho, ralentizar tu aplicación). En el INIT () del FORM, coloca un código como este. Supongamos que la tabla de la que quieres levantar los datos se llama tabla1

**--Creamos cursor para generar reporte
LOCAL ARRAY aStruct(1) && Define una variable tipo ARRAY
=AFIELDS(aStruct, tabla1 ) && Crea un Array con la estructura de tu tabla original
CREATE CURSOR mycursor FROM ARRAY aStruct && Crea el Cursor con la Estructura de tu tabla

**--Volcamos la tabla en el cursor y cargamos
SELECT mycursor
APPEND FROM DBF( tabla1 )

**--Para ver el cursor creado y catgado con los datos de la tabla

Select mycursor

BROWSE

El cursor se crea con la misma estructura de tu tabla! Así te ahorras muchos INSERT INTO

Para "enviar" los datos... podes crear un cursor consulta con SELECT

SELECT * FROM tabla1 WHERE campocheck = .T. INTO CURSOR mycur2

BROWSE

Y luego ya tienes en el mycur2 los datos que enviaras! :)

Saludos! Avisame cualquier cosa! :)

Desde Managua, Nicaragua

Un abrazo!

Ravenn :D :D :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas