Visual Basic - COSA MUY RARA!!!

Life is soft - evento anual de software empresarial
 
Vista:

COSA MUY RARA!!!

Publicado por Ana (72 intervenciones) el 26/01/2006 16:39:38
Hola,
me encuentro ante un problema muy extraño.

Estoy intentando buscar registros en una base de datos que van desde una fecha hasta otra. Las fechas las tomo de un DTPicker, las formateo :
y despues paso a realizar la consulta SQL.

Hasta aqui todo bien. Pero me he dado que no me funciona bien las busquedas porque cuando se realizan estas sentencias

fdesde = Format(DTPickerDesde.Value, "mm/dd/yyyy")
fhasta = Format(DTPickerHasta.Value, "mm/dd/yyyy")

se realizar la primera y la segunda la ignora, quedandose como estaba
es decir si la fecha de Hasta es : 26/01/2006 NO se convierte en 01/26/2006
En cambio la fecha de Desde es: 25/01/2005 SI se convierte en en 01/25/2005
¿Porque el primero si y el segundo no?

me ocurre en varios Formularios, AYUDA
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:COSA MUY RARA!!!

Publicado por Cecilia Colalongo (3116 intervenciones) el 26/01/2006 16:58:17
Fijate de usar el formato "yyyy-mm-dd" que es mas general.
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:COSA MUY RARA!!!

Publicado por Silvana (14 intervenciones) el 27/01/2006 00:14:09
Anita ...
Lo que pones en tu consulta es inconsebible, no puede ser bajo ningún punto de vista que en una linea te tome el value del dtpicker1 y nó en el segundo, habría que fijarse detenidamente lo que puede estar mal y hacer correr tus lineas paso a paso y asi ver lo que está ocurriendo ...

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:COSA MUY RARA!!!

Publicado por Silvana (14 intervenciones) el 27/01/2006 14:29:59
Tranquilo nuevo ....

no te pongas nervioso, pero si usas tu materia gris lo que dice la colega es casi inaudito, solo le dije que ejecutara el programa paso a paso y vea las lineas de su codigo ... no puede ser que en una varible tome un valor y en otra no ...

No es para que te pongas así ...

salu2
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:COSA MUY RARA!!!

Publicado por lito (70 intervenciones) el 27/01/2006 16:18:04
jaja Y volviendo al tema...

No es nada raro.
Es cuestion de configuracion regional.

Y la respuesta de cecilia termina la cuestion.

---

Ahora, si quieren saber que pasa (revisen el foro, SIEMPRE hay problemas con esto)

Pongan en la ventana inmediato:

*** con configuracion español

? cdate ("12-1-2006") , cdate("27-1-2006")
12/01/2006 27/01/2006

*** Cambia la configuracion regional a ingles (ej Zimbabwe)

? cdate ("12-1-2006") , cdate("27-1-2006")
12/1/2006 1/27/2006

Deduzcan que hizo el vb: vio que el 27 no podia ser mes, asi que lo arregló.
NO se puede pasar ese string a una consulta SQL,
seria como poner x = 2,5 en vez de x = 2.5

Lo correcto es usar YYMMDD usando format (variableDate, "yyyymmdd")

SELECT ... WHERE FECHA = '20060127'

ahi el sql no tiene que deducir nada, no falla en ninguna configuracion.

Ta, silvana?

salud.
lito
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:COSA MUY RARA!!!

Publicado por Miguel Peña (37 intervenciones) el 27/01/2006 17:54:30
Buenas señores:

Viendo el ejemplo de litro, lo comparto aunque no del todo. Pienso que no deberiamos tomar en cuenta la configuracion regional porque tu sabes con exactitud que configuracion tendra la PC donde se instalara la aplicacion, yo recomiendo lo siguiente.

Convertir la fecha en formato que SQL pueda entenderla, vamos a verla con un ejemplo:

Quiero obtener todas la ventas de la tabla facturas_detalles tomando en cuenta un rango de fechas (utilizando el componente DP).

SQLString = "SELECT * FROM facturas_detalles WHERE fecha BETWEEN "
SQLString = SQLString & " CAST(' " & Format(DP1.VALUE, "YYYY-MM-DD") & "' AS SMALLDATETIME) AND CAST(' " & Format(DP2.VALUE,"YYYY-MM-DD") & "' AS SMALLDATETIME)"

Lo que estoy haciendo es convertir la fecha del DP en formato que SQL pueda interpretar. El CAST() es una de la funcion que te permite cambiar el tipo de dato de una Variable (en sql server).

Espero que esto de ayude.

SLDS.

mp
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:COSA MUY RARA!!!

Publicado por Lito (70 intervenciones) el 27/01/2006 19:01:32
ah

no conocia CAST, alguna vez use CONVERT
pero igual que en tu ejemplo, tampoco tengo problemas con la configuracion regional si mando solo string

tu ejemplo da

*** WHERE fecha = CAST ('2006-01-27' AS SMALDATETIME)

yo pongo

*** WHERE fecha = '20060127'

y anda igual, SIN IMPORTAR la configuracion
se ve que lo convierte solo, cosa que no haria si pongo fecha = '27-01-2006'

Ahora se me generan dudas que no tienen que ver con el problema, ya resuelto.
1)
Son estandar SQL ?

* fecha = CAST('2006...
y
* fecha = '2006 (solo lo use SQL SERVER )

funcionan en todos los SQL ?
pregunto, porque antes yo convertia la fecha a un numero
(como usa internamente el unix)
pero distintos motores respondian distinto a la consulta.

2)
Tiene algun efecto en performance ?
o en ambos casos el SQL hace la misma conversion ?

debi haber abierto una nueva nota,
pero esta muy enganchada con los mensajes anteriores...
espero Ana sepa disculpar...

salud
litro y 1/2
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

SOLUCIONADO!!!

Publicado por Ana (72 intervenciones) el 30/01/2006 09:29:08
Antes de nada, gracias a todos por molestaros en leer la consulta.
El Problema estaba en que habia declarado las variables fdesde y fhasta como:

Dim fdesde, fhasta as Date

fdesde = Format(DTPickerDesde.Value, "mm/dd/yyyy")
fhasta = Format(DTPickerHasta.Value, "mm/dd/yyyy")

he puesto ahora

Dim fdesde, fhasta

y ya funciona porque lo que ocurria es que en la fecha desde yo solia poner 09/01/2005 y al cambiarla como "01/09/2005" la aceptaba pero al cambiar la fecha hasta, donde estaba poniendo 25/01/2005 , no aceptaba "01/25/2005" como fecha ya que no existe el mes 25. Vaya Vaya en??!!

al no declararla como date la acepta y ahora funciona la consulta.

Gracias a todos y por favor no picaros tanto mutuamente. PROGRAMEMOS.

Ana.
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:COSA MUY RARA!!!

Publicado por Silvana (14 intervenciones) el 27/01/2006 21:27:38
Antinuevo ... te respondí porque vos me adulaste a mi ... y si te tuviera de frente te lo diria en la cara ... y yá terminá con esto !!!!!
a programar y listo ...
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:COSA MUY RARA!!!

Publicado por antinuevo (48 intervenciones) el 27/01/2006 21:38:02
En esta nota no he intervenido para nada... al menos que te refieras a la nota del DataGrid (iniciada por Yeni), en tal caso tu respuesta no fue satisfactoria, o más bien.. tuve dudas... si acaso ya no quieres responder porque no sepas o porque simplemente... no quieras... pues ni modo... de todas formas muchas gracias por tu atención.

Y si acaso te ofendí con la "adulacion"... pues igual... mil ... pero mil disculpas...

Saludos y gracias nuevamente
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:COSA MUY RARA!!! (para nuevo)

Publicado por Silvana (14 intervenciones) el 27/01/2006 22:37:24
Siempre crees que tienes la ultima palabra .. y dices cosas para que tu nota sea la ultima ...

pero terminemos con esto .... y no respondàs masssssssssss
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:COSA MUY RARA!!!

Publicado por daniel (1 intervención) el 02/02/2006 17:54:17
este es un foro de visual basic no una telenovela!!!
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