Contar días entre dos texbox

Hola buen día. Por acá de nuevo... Espero estés bien.
Quisiera saber cómo reformular el siguiente código para poder calcular los días a partir de una fecha.
Por ejemplo: Si mi fecha inicial (fec_asig) es hoy (23/08/2011, Texbox FECHA) y en otro texbox (lapso, NUMÉRICO) coloco 30 (corresponde a días hábiles), el resultado de esos días (fec_asig + lapso) aparezca en otro texbox (fec_vecm, FECHA), el cual debería dar como resultado 03/10/2011. Esto lo podía hacer en un formulario que usaba anteriormente, pero como ahora estoy haciendo los formularios sin vincular tablas y sin usar librerías, pues no se que tanto me sirva...
store date( ) to fec
Dia=0
con = thisform.lapso.Value
cont1 = 0
cont2 = 0
fec = thisform.fec_asig.Value
FOR i =1 TO con
dia =DOW(fec) + i
IF dia = 7
cont2 = cont2 + 1
fec = thisform.fec_asig.Value + cont2
dia=DOW(fec)
endif
IF dia = 1
cont2 = cont2 + 1
fec = thisform.fec_asig.Value + cont2
ENDIF
NEXT i
thisform.fec_vecm.Value = (thisform.fec_asig.Value + thisform.lapso.Value) + cont2
De antemano gracias.
Respuesta
1
Pues según yo, el hecho de que no vincules la tabla con el formulario ni uses librerías no tiene por qué afectarte en la funcionalidad del código que muestras, debe seguir funcionando de la misma manera.
Por otro lado, para lograr eso que mencionas, creo que el código no funcionaría muy bien en todos los casos, al menos hice algunas pruebas y no salió muy bien. Hice un ejemplo, con otro código que sí me funcionó. En tu caso sería algo así:
dAsignacion = thisform.fec_asig.Value
nLapso = thisform.lapso.Value
nCont = 0
DO WHILE nLapso > 0
IF !INLIST(DOW(dAsignacion + nCont), 7, 1)
nLapso = nLapso - 1
ENDIF
nCont = nCont + 1
ENDDO
dFecVen = dAsignacion + nCont - 1
thisform.fec_vecm.Value = dFecVen
Recordado lo de la librería que tenías para mostrar el calendario, creo que te convendría usar un control OLE. Lo insertas en el formulario y seleccionas el tipo "Microsoft Date and Time Picker". Aquí te mando un enlace donde te dan una idea de cómo usarlo:
http://support.microsoft.com/kb/259646/es
El hecho de usar este tipo de controles, externos de cierta forma, ya que no son nativos de Visual FoxPro, tiene algunas implicaciones, sobre todo al distribuir tu programa, pero igual por eso no te preocupes todavía. Por lo pronto debe funcionar.
Qué tal! Gracias...
Pues, esta consulta no tiene que ver con el proyecto con el que he consultado anteriormente je je es otro.
Utilicé tu código, en el evento LostFocus en el texbox "lapso"
Al ejecutar el formulario y colocar un valor en "lapso" me sale este error: "Error del programa, incompatibilidad entre el tipo de operador y el tipo de operando". En el depurador me indica la línea: DO WHILE nLapso > 0
Ahh, va a ser por lo mismo de los tipos de datos en los "TextBox" que te he comentado. Seguro esta tomando el valor de "ThisForm.lapso.Value" como texto. Entonces habría que convertirlo a número, probablemente también sería necesario convertir el de "fec_asig".
dAsignacion = VAL(thisform.fec_asig.Value)
nLapso = VAL(thisform.lapso.Value)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas