SQL - 2 between

   
Vista:

2 between

Publicado por Eber (6 intervenciones) el 10/01/2011 21:56:57
Estimados!!!
Estoy tratando de hacer la siguiente consulta
("SELECT * FROM diario where Fecha=#" & Format(txfecha, "mm/dd/yyyy") & "# And linea=" & "'" & txtlinea & "' " & "and hora between #12/30/1899 " & Format(txthora, "hh:mm") & "# and #12/30/1899 " & Format("23:00", "hh:mm") & "# and hora between #12/30/1899 " & Format("00:00", "hh:mm") & "# and #12/30/1899 " & Format(Combo2, "hh:mm") & "#")
pero cuando la llamo no me trae nada...Será que no puedo hacer este tipo de consulta. Si saben como hacerla de otro modo por favor diganme

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:2 between

Publicado por Leonardo Josué (877 intervenciones) el 12/01/2011 19:10:48
Hola Eber:

No tengo idea de qué manejador de BD estás utilizando, tampoco tengo idea de cuales son los criterios que quieres aplicar al filtrar la información. Quizás convendría que comenzaras por aclararnos estos puntos

Por otro lado, es conveniente que en lugar de que nos pongas cómo estás formando su sentencia SQL nos pongas el resultado final, es decir, al no tener idea de cual es el contenido de tus campos txfecha, txtlinea, txthora etc. resulta complicado saber donde está el problema.

Ahora bien, te repito que no sé que manejador de BD estás utilizando y si estás mezclando código de algún lenguaje de programación, pero hay un detalle en tu función FORMAT que te convendría revisar, por un lado tienes esto:

Format(txfecha, "mm/dd/yyyy")

y por otro lado tienes esto

Format("00:00", "hh:mm")

Creo que puede haber un problema con el formateo mm. En mi experiencia con lenguajes de programación y SQL el formato (mm) corresponde al MES, para especificar el formato de MINUTO se utiliza (mi). Revisa la documentación correspondiente para ver este detalle.

si continuas con problemas, pues trata de darnos más detalles, pon algunos datos de ejemplo y qué esperas de salida. Así será más fácil tratar de ayudarte.

Saludos
Leo
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:2 between

Publicado por EBER (6 intervenciones) el 13/01/2011 15:50:28
Estimado Leonardo!!!!
Gracias por responderme...

Lo que quiero hacer es lo siguiente:
Quiero seleccionar en un campo de hora dos rangos de hora. Por ejemplo, si en el software me seleccionan en dos dbcombo que me traigan la producciòn desde la 22:00 hasta las 03:00, estoy seleccionando con beetwen desde las 22:00 hasta las 23:00 y con otro beetwen desde las 00:00 hasta las 03:00.

Es decir el problema lo tengo es cuando la hora del dbcombo 1 es mayor a la del dbcombo 2. El caso contrario ya lo tengo listo y me funciona perfectamente. Pero estoy trancado en este y se me ocurriò incluir dos beetwen en la sentencia sql pero aparentemente no puedo hacerlo. Estoy usando Access dentro de poco voy a migrar el software a sql server.

El format que utilizo ("hh:mm") para obligar el formato de la hora de verdad que no lo sabía y siempre lo había usado de esa forma y nunca me habìa dado temas, voy a intentar cambiar eso a ver.

Bueno aunque si se te ocurre una mejor forma de hacer esto es bienvenida!!!

GRACIAS!!!!!!!!!
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:2 between

Publicado por Ariel Bálsamo (9 intervenciones) el 13/01/2011 16:24:33
Leonardo, el problema de tu consulta es que estás pidiendo que la hora esté entre, por ejemplo, las 22:00 y las 23:00 Y que además esté entre las 00:00 y las 03:00. Por este motivo ningún registro cumple con el criterio.
Deberías cambiar el AND por un OR entre los BETWEEN.
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:2 between

Publicado por Leonardo Josué (877 intervenciones) el 13/01/2011 16:46:16
jejeje... Buenos días Ariel, el problema con la consulta no es mío, es del compañero Eber... pero estás en lo correcto al mencionar lo del operador OR, sólo te faltó agregar que habría poner los dos between entre paréntesis, ya que por jerarquía de operadores primero se ejecutan las sentencias AND y después las OR. La consulta quedaría más o menos así:

SELECT * FROM diario where
Fecha=#01/102010# AND
linea='texto' AND
(
hora between #22:00# and #23:00# OR
hora between #00:00# and #03:00#
)

No estoy muy familiarizado con la sintaxis de ACCESS, pero espero que se entienda la idea.

Saludos.
Leo.
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:2 between

Publicado por EBER (6 intervenciones) el 13/01/2011 21:26:40
Estimados!!!
Lo probe y esa era el tema!!!


GRACIAS A LOS DOS POR SU APOYO!!!!!!!
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