FoxPro/Visual FoxPro - Validar el Nombre del Mes en Curso

 
Vista:

Validar el Nombre del Mes en Curso

Publicado por Gabriel (427 intervenciones) el 04/09/2007 00:15:45
Que tal amigos :
Nuevamente recurriendo a ustedes a ver si me pueden ayudar a resolver
el siguiente problema.

He creado un ComboBox que muestra los 12 meses del año y los datos son
cargados de esta forma...

#DEFINE M1_LOC "Enero"
...
#DEFINE M12_LOC "Diciembre"

THIS.AddItem(M1_LOC)
...
THIS.AddItem(M12_LOC)

Hasta aqui todo funciona perfectamente...

El problema empezo al momento de hacer en el Evento VALID una rutina
de validacion por ejemplo para evitar que el Usuario elija un mes
Mayor al Mes en Curso.
Evento : VALID

nFecha && Número del Mes
nMes && Número del Mes en curso

IF nFecha > nMes
?? CHR(7)
WAIT WINDOW "Mes de Pago Incorrecto." NOWAIT
=MESSAGEBOX("Seleccione el Mes Correcto",16+0,"Aviso ")
RETURN .F.
ENDIF

El hecho es que el Return .F. solo funciona la primera vez si el
usuario vuelve a tomar un Mes Mayor el VALID ya no bloquea la salida
del ComboBox y deja pasar el MES incorrecto...

Amigos me podrian decir que estoy haciendo mal...
Tiene alguien una idea mejor de validar el MES correcto...

Agradezco sus comentarios y sugerencias...

Saludos,

GABRIEL
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:Validar el Nombre del Mes en Curso

Publicado por Plinio (7841 intervenciones) el 04/09/2007 01:31:51
Pon un NODEFAULT antes del RETURN .F.
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:Validar el Nombre del Mes en Curso

Publicado por ricardo (153 intervenciones) el 04/09/2007 09:50:40
De momento el wait te sobra por que no se vería
local llRetorno
llretorno = .T.
IF nFecha > nMes
?? CHR(7)
=MESSAGEBOX("Seleccione el Mes Correcto",16+0,"Aviso ")
llRetono = .F.
ENDIF

RETURN llretorno

o Incluso inicializando a .F. y solo poniendo a .T. cuando corresponda, esto te debería funcionar y es mas ortodoxo
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:Validar el Nombre del Mes en Curso

Publicado por Gabriel (427 intervenciones) el 05/09/2007 15:16:10
Que tal amigos :
Gracias por sus sugerencias...

Tuve la idea de replantear el codigo del ComboBox y hacerlo utilizando un Cursor y el comando GOMONTH de esta forma cuando el usuario ingrese al ComboBox ya aparece dicho control ubicado en el Mes en Curso. Pero para evitar un posible error en la seleccion se me ocurre que los meses posteriores como OCTUBRE, NOVIEMBRE y DICIEMBRE aparezcan inabilitados...
Sera posible hacer ello...

Aqui les muestro lo avanzado...

SET CENTURY ON
SET DATE BRITISH

** Creamos las tablas
CREATE CURSOR Mes (idMes N(2), cMes C(30))

** rellenamos la tabla de mes
FOR R=1 TO 12
INSERT INTO MES (idMes, cMes );
VALUES (R, CMONTH(GOMONTH(DATE(),R-1)))
ENDFOR

**A rellenar el combo con los meses
SELECT mes
SCAN
n=n+1
this.AddListItem (mes.cmes,n,1)
this.AddListItem (ALLTRIM(STR(mes.idmes)),n,2)
ENDSCAN

Oculto la columna (idMes) del ComboBox por cuanto me muestra en un orden correlativo diferente al Nombre del Mes que le sigue...

Agradezco vuestra ayuda...

Saludos,

GABRIEL
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