Consulta VFP

Víctor tengo esto
a=2007
b=2
c=29
d= "Valida"
e= "Invalida"
If a > 1900 And a < 3000 And b > 0 And b <= 12
If c <= 28 Or (c = 29 And b = 2 And ( a % 4 ) = 0) Or ;
(c = 31 And AllTrim( Str( b ) ) $ "1.3.5.7.8.10.12") Or ;
(c = 30 And AllTrim( Str( b ) ) $ "4.6.9.11")
?d
Else
? E
EndIf
EndIf
Que me dice si un día es válido o invalido, lo que necesito agregarle es que me diga ademas de eso, que es lo invalido, si el día el mes o el año.
Muchas gracias

1 Respuesta

Respuesta
1
a=2007
b=2
c=29
If a > 1900 And a < 3000
     If b > 0 And b <= 12
          If c <= 28 Or (c = 29 And b = 2 And ( a % 4 ) = 0) Or ;
            (c <= 31 And AllTrim( Str( b ) ) $ "1.3.5.7.8.10.12") Or ;
            (c <= 30 And AllTrim( Str( b ) ) $ "4.6.9.11")
               ?"correcto"
          Else
              ? "día"
          EndIf
     Else
         ? "mes"
     EndIf
Else
     ? "año"
EndIf
Víctor fíjate que el que me diste el ejemplo si pones esa fecha sale correcto, pero ese día es incorrecto, por que no es año bisiesto el 2007, creo que no esta calculando el año bisiesto, lo demás esta bien mes y año
Cambia el código:
a=2007
b=2
c=29
If a > 1900 And a < 3000
     If b > 0 And b <= 12
          If c <= 28 Or (c = 29 And b = 2 And ( a % 4 ) = 0) Or ;
            (c = 31 And AllTrim( Str( b ) ) $ "1.3.5.7.8.10.12") Or ;
            (c = 30 And AllTrim( Str( b ) ) $ "4.6.9.11")
               ?"correcto"
          Else
               ? "día"
          EndIf
     Else
         ? "mes"
     EndIf
Else
     ? "año"
EndIf
Ahora anda perfecto pero, no me puedo dar cuenta que cambiaste, me aclaraste que cambia el código, pero sigo sin darme cuenta que cambio
Los comparativos en el día

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas