Visual Basic - Tratamiento de fechas con # y sin #

Life is soft - evento anual de software empresarial
 
Vista:

Tratamiento de fechas con # y sin #

Publicado por La Flash (4 intervenciones) el 03/04/2009 02:59:03
Que tal a todos.

Espero esten bien.

Acudo a este foro por que tengo una gran duda y espero me puedan ayudar.

Estoy trabajando con un reporte. Es bastante sencillo, solo me conecto a una base de datos de MS SQL, hago mi consulta y genero el reporte.

Tengo una pequenia interfaz donde pido una fecha de inicio y una fecha final.

Necesito crear un arreglo, el tamanio sera dependiendo del numero de dias que haya entre la fecha de inicio y la fecha final.

Para determinar el numero de dias, uso la funcion DateDiff, pero veo que tiene un comportamiento medio extranio.

Primero hice una prueba con esta funcion, de la siguiente forma:

Sub fechoria()

Dim f1 As Date
Dim f2 As Date
Dim nd As Integer

f1 = #3/30/2009#
f2 = #4/5/2009#

nd = CInt(DateDiff("D", CDate(f1), CDate(f2)) + 1)
MsgBox nd
End Sub

El valor de nd me da 7

Ahora, quiero implementar esto en mi rutina real, y es donde me encuentro en problemas. Mi procedimiento recibe como parametros fecha1 y fecha2 as Date, cuando quiero applicar
nd = CInt(DateDiff("D", CDate(f1), CDate(f2)) + 1), el valor de nd ya no me dio 7 (en el supuesto que los valores de los parametros son los mismos que en mi ejercicio anterior), sino que me dio 36!!!

Yo se lo atribuyo al hecho de que en mi primer ejercicio, encerre los valores de f1 y f2 entre ##, por que son valores constantes, pero en mi procedimiento real, no se como darles ese manejo.

Me pueden ayudar??

Gracias de antemano
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:Tratamiento de fechas con # y sin #

Publicado por Pedro Luis (878 intervenciones) el 03/04/2009 10:27:25
Resultados que he obtenido en el inmediato
?cdate("3-30-9")-cdate("4-5-2009")
-35

?cdate("30-3-9")-cdate("5-4-2009")
-6

Las almohadillas y el formato americano usalo solo en Sql

Como verás lo que ha ocurrido es que en el primer caso el mes es 5 y en el segundo el mes es 4.
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:Tratamiento de fechas con # y sin #

Publicado por P3L30N2009 (699 intervenciones) el 03/04/2009 10:28:53
El problema es que al pasarle los parámetros como fecha (Date) toma el formato regional de la máquina.

En tu caso el segundo parámetro (f2) lo toma como 4 de mayo

Para evitarlo, en el procedimiento, formatea las fechas al tipo americano:

f1 = Format(f1, "mm/dd/yyyy")
f2 = Format(f2, "mm/dd/yyyy")
nd = CInt(DateDiff("d", f1, f2 + 1))
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:Tratamiento de fechas con # y sin #

Publicado por La Flash (4 intervenciones) el 03/04/2009 21:58:45
Mil gracias por sus respuestas, en cuanto pruebe sus recomendaciones, les hare saber los resultados.

Mil gracias de nuevo!!
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:Tratamiento de fechas con # y sin #

Publicado por La Flash (4 intervenciones) el 07/04/2009 02:20:43
Mil gracias, segui sus sugerencias y me funcionaron a la perfeccion.

En lo que les pueda ayudar estoy a su dispocision.

Saludos
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