Visual Basic - ayuda para fechas

Life is soft - evento anual de software empresarial
   
Vista:

ayuda para fechas

Publicado por edic (40 intervenciones) el 14/02/2011 21:33:03
hola amigos tengo unproblema y no se como solucionarlo agradezco toda la ayuda
el codigo que inserto en un boton es:

Data1.RecordSource = "SELECT * From PEDIDO_FABRICA WHERE FECHA >= '" & Text4.Text & "' AND FECHA <= '" & Text5.Text & "'"

Data1.Refresh

'donde PEDIDO_FABRICA es la base de datos y FECHA es la tabla
'fecha desde text4=03/02/2011 hasta text5=06/02/2011
'y en un DBGrid me aparecen el resultado pero me aparecen fechas que no coresponden
'ej.
03/02/2011
04/02/2011
04/03/2011 aqui esta el error aparece una fecha de otro mes o que esta fuera del rango
05/02/2011
06/02/2011
que pasa me estoy Volviendo loco
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:ayuda para fechas

Publicado por Paolo Santos (74 intervenciones) el 15/02/2011 04:45:17
Trata de utilizar la sentencia BETWEEN, para que te quede mas o menos de esta forma

"SELECT * From PEDIDO_FABRICA WHERE FECHA BETWEEN '" & Text4.Text & "' AND '" & Text5.Text & "'"

Espero te funcione esta solcuion, 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

RE:ayuda para fechas

Publicado por David Jonathan Molina Godoy (10 intervenciones) el 15/02/2011 06:29:57
Pues a lo mejor el error esta en la interpretacion que haces, en que "PEDID_FABRICA" la consideras como BD cuando es una tabla y "FECHA" la consideras como tabla cuando es un Campo...

pero igual, te debiera de salir la consulta como esperas, a lo mejor, tendrias que revisar si el campo FECHA de tu tabla es en realidad un campo de fecha, pero despues, la solución de Paolo me parece la mejor.

Jonathan
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:ayuda para fechas

Publicado por Pedro Luis (128 intervenciones) el 15/02/2011 09:21:14
Con las fechas suele ocurrir que el sistema cree que las fechas son americanas, o sea mm/dd/yyyy, y le estas pidiendo fechas de Marzo a Junio, y los resultados asi lo confirman, prueba lo siguiente:
en vez de text4 pon format(text4,"mm/dd/yyyy")
Por otra parte me sorprende que no te de error pues las fechas se deben poner entre almohadillas(#) .
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:ayuda para fechas

Publicado por edic (40 intervenciones) el 15/02/2011 14:10:15
vale pruevo,.y gracias por el interes
pero me parece que solo busca el dato de el dia por eso tambien encuentra dias de otros meses pues en el text4.text le meto solamente ej:04 y encuentra el mismo resultado que si metiera 04/02/2011
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:ayuda para fechas

Publicado por Christian (666 intervenciones) el 15/02/2011 17:06:12
Estoy de acuerdo con todo lo que dicen los chicos.

-Usa Between
-Las fechas ponelas entre #
-Fijate si el campo es realmente fecha
-Pasale con la funcion Format el formato de fecha que esta esperando la base

Tiene que andar amigo no hay vueltas.

saludos y suerte
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:ayuda para fechas

Publicado por ñedic (40 intervenciones) el 15/02/2011 21:13:28
Muchas gracias amigos estoy tres días con este tema la verdad estoy contento con la solución pues es lo que faltaba para cerrar el programa sinceramente muchas gracias la solución la he podido encontrar de dos formas. Y la dejo aquí para que otros puedan aprovecharse de esta consulta pues he mirado por todas partes y solamente te marean.

Data1.RecordSource = "SELECT * FROM datos WHERE fecha2 >= #" & Text4.Text & "# AND fecha2 <= #" & Text5.Text & "#"


Data1.RecordSource = "SELECT * From datos WHERE fecha2 BETWEEN #" & Text4.Text & "# AND #" & Text5.Text & "#"

muchas gracias a todos
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:ayuda para fechas

Publicado por edic (40 intervenciones) el 16/02/2011 00:06:16
mi gozo en un pozo esto funciona cuando busca a partir del dia diez
ej 11/02/2011
pero cuando buscas un dia inferior a diez
ej 04/02/2011
no funciona de hecho no encuentra nada
ayuda porfa que ocurre
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:ayuda para fechas

Publicado por Pedro Luis (128 intervenciones) el 16/02/2011 09:31:38
Ahora mas que nunca estoy seguro de que debes formatear a formato yanqui.
Y esto quizas te acabe de liar, el 4 en clave de fecha representa el 3-01-1900, y cualquier fecha de hoy en dia es mayor que esa. Si no me crees prueba en inmediato Print cdate(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:ayuda para fechas

Publicado por Paolo Santos (74 intervenciones) el 17/02/2011 01:15:50
Bueno ahora ya se que te sucede, pues tuve una experiencia anterior y me paso exactamente lo mismo, respecto al tema de las almohadilla (#) y el apostrofe (') depende del motor de base de datos, no me pregunten porque, pero estoy seguro que en una access se usan almohadillas y en un Oracle son con apostrofes porque ya me sucedio y asi solucione problemas de SELECT de fechas, bueno ahora con las fechas del dia 1 hasta el dia 12 es porque esa base de datos que me imagino que es un access, o algo asi, resulta que estos tipòs de bases de datos, los campos de fechas lo guarda en formato Estadounidense que es mm/dd/yyyy, si esta en tus capacidades y no hay datos en la base de datos, los puedes guardar en este formato con el comando format(fecha,"mm/dd/yyyy"), pero como ya habia ingresado datos y era un problema arreglarlos asi que me ingenie una forma de usar nuestro formato latino que es dd/mm/yyyy para guardar los datos y lo unico que tuve que hacer es en el SELECT entre almohadillas llamo la funcion ORDENAR FECHA y mando la fecha para que reconozca si es del dia 1 al 12 lo formatea en mm/dd/yyyy y el resto de fechas los deja en dd/mm/yyyy, para que los encuentre como los guarde, ahhh y muy importante siempre guardo las fechas en formato dd/mm/yyyy pero entre apostrofes, es decir INSERT INTO TABLA VALUES('01/11/2011') y el SELECT mando a mi funcion ORDENAR FECHA entre almohadillas asi
SELECT * FROM TABLA WHERE FECHA=#+ORDENAR_FECHA(FORMAT$(date,"dd/mm/yyyy"))+#, y lo formatea segun la fecha asi no tengo problemas en manejar dd/mm/yyyy en la base de datos, dejo la funcion ordenar_fecha que es muy sencilla para ver si te funciona esta solucion

Public Function Ordenar_Fecha(strFecha As String) As String

Select Case Val(Format$(strFecha, "dd"))
Case 1 To 12
Ordenar_Fecha = Format$(strFecha, "mm/dd/yyyy")
Case Else
Ordenar_Fecha = Format$(strFecha, "dd/mm/yyyy")
End Select
End Function


Espero te sirva esta solucion o cualquier duda con gusto te la resuelvo salduos.. Paolo Santos.
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