D Espero poder ayudarte. Mm... a como veo, cuando el usuario llegue a la semana 14 (en este caso precisamente técnico, seria el registro numero 14 en la tabla de fechas) que corresponde al 80% de los registros (18/100 * 80%), el sistema debe lanzar una alerta que se ha llegado al 80% de los registros... ¿es eso lo que necesitas? Bueno... según yo, si. Corrígeme si me equivoco para poder ayudarte. :)
Bueno... no se como propones tu en tu sistema la forma de como el usuario validara las fechas cada semana... pero mi propuesta es la siguiente:
En foxpro hay muchas formas de hacer que los resultados sean los mismos. Para ir validando, el usuario puede recurrir a un form donde se encuentre un método llamado "validacionfecha80%" que tu mismo puedes crear y ahí correr un código que extraiga cuantas semanas se han cumplido. Imagino que a cada semana, cuando se va cumpliendo, le vas agregando alguna señal de que, precisamente, se ha cumplido, por ejemplo: un campo en la misma tabla llamado "situación", de tipo carácter, en donde, a medida que validas vas cambiando su valor. Te sugiero que cuando generes las fechas, en un campo también insertes un valor A (activa) a todos los registros. Cuando valides semana por semana, el estado del campo debe cambiar y el valor, pasando de A a I (Inactiva). Así, cuando el usuario valide la primer semana, como esta ya se ha cumplido, pasa a estar inactiva y el valor del registro en el campo "situación" seria I. Aquí damos en el clavo: cuando el valor se cambie de activa a inactiva, haremos que el sistema cuente en numero de registros (semanas) que están inactivos. Cuando el numero de registros sea 14, ya se habrá cumplido con el 80% se semanas... y ahí daremos la alerta al usuario y podrás generar tu nueva condición.
Vamos a la practica ahora: en tu formulario (en modo diseño) ve al menu y en FORM selecciona la opción NEW METHOD y ahí crearemos un nuevo método llamado validacionfecha80% Luego, ve a las propiedades de tu form, y en la pestaña METHOD busca la final el método que acabamos de crear. Ahí escribiremos el código:
LOCAL lnNumeroSemanas
**--Para validar, una vez pasada la semana
**--Cambiamos el valor de la situación del
**--Registro por I y así sabemos que dicha semana
**--Ya se cumplió
SELECT dbf_fechas
REPLACE dbf_fechas.situación WITH "I"
TABLEUPDATE(.T.)
**--Contamos para saber si hay 14 registros (80%)
SELECT dbf_fechas
COUNT FOR dbf_fechas.situación = "I" TO lnNumeroSemanas
IF lnNumeroSemanas = 14
MESSAGEBOX("Se ha cumplido el 80% de semanas.", 16, "Aviso")
**Escribe aquí la condición nueva
ENDIF
Prueba y me avisas! :)