Comando Select para cargar dataset

12/07/2006 - 13:06 por enorso | Informe spam
La sentencia siguiente funciona perfectamente si el campo fecinitrab es solo
fecha. Es decir la agrupación por día es correcta

SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM rechum
WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# " & _
"GROUP BY otrechum.fecinitrab ORDER BY otrechum.fecinitrab"

Necesito que fecinitrab sea fecha y hora. Si ejecuto la sentencia anterior,
no funciona bien ya que la parte hora hace que el campo fecinitrab no sea
igual aunque sea el mismo día.

Si cargo el dataset con el select siguiente me da un error que dice:
Ha intentado ejecutar una consulta que no incluye la expresión especificada
'fecinitrab' como parte de una función de agregado.

SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM rechum
WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# " & _
"GROUP BY DAY(otrechum.fecinitrab) ORDER BY otrechum.fecinitrab"

¿Que puede estar mal?

Gracias

Preguntas similare

Leer las respuestas

#1 Eduardo Alvarado Meza
13/07/2006 - 07:38 | Informe spam
Me parece que es cuestion de percepcion pero tu pregunta es valida, la
ultima sentencia sql no es correcta pero tu solucion esta mas cercana a la
primera. Primero te aconsejo que utilizes parametros en lugar de concatenar
cadenas, eso te garantizara que todo funcione bien. Segundo, quita el
between y usa un where de la siguiente manera:

-Si deseara saber los x registros del mes de julio entonces mi
Fecha1 seria el 1ro de Julio 2006 a las 00:00:00
Fecha2 seria el 1ro de Agosto 2006 a las 00:00:00

de esta forma tu Where luciria asi:
WHERE (rechum.fecinitrab >= @FECHA1) AND (rechum.fecinitrab < @FECHA2)

Asi de esta manera buscara cualquier registro entre 20060701 00:00:00 y las
20060731 23:59:59
que es basicamente lo que te entendi que deseabas

"enorso" escribió en el mensaje
news:
La sentencia siguiente funciona perfectamente si el campo fecinitrab es
solo
fecha. Es decir la agrupación por día es correcta

SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM rechum
WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# " &
_
"GROUP BY otrechum.fecinitrab ORDER BY otrechum.fecinitrab"

Necesito que fecinitrab sea fecha y hora. Si ejecuto la sentencia
anterior,
no funciona bien ya que la parte hora hace que el campo fecinitrab no sea
igual aunque sea el mismo día.

Si cargo el dataset con el select siguiente me da un error que dice:
Ha intentado ejecutar una consulta que no incluye la expresión
especificada
'fecinitrab' como parte de una función de agregado.

SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM rechum
WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# " &
_
"GROUP BY DAY(otrechum.fecinitrab) ORDER BY otrechum.fecinitrab"

¿Que puede estar mal?

Gracias
Respuesta Responder a este mensaje
#2 enorso
13/07/2006 - 09:09 | Informe spam
Gracias por el interes y los consejos.
El problema no lo tengo a la hora de seleccinar datos entre dos fechas
determinadas.
Lo que necesito es calcular la suma del campo cant para cada dia. El
problema está en el GROUP BY. Si pongo logicamente GROUP BY fecinitrab, al no
despreciar la parte horaria, agrupa aquellos registros en los que coincida
tanto la fecha como la hora, con lo cual para un mismo día calcula sin
agrupar ya que no existe ningun registro en el que la parte horaria sea igual.

Si pongo GROUP BY DAY(fecinitrab) para que discrimine la parte horaria, es
cuando me da el error:
Ha intentado ejecutar una consulta que no incluye la expresión especificada
'fecinitrab' como parte de una función de agregado.


"Eduardo Alvarado Meza" escribió:

Me parece que es cuestion de percepcion pero tu pregunta es valida, la
ultima sentencia sql no es correcta pero tu solucion esta mas cercana a la
primera. Primero te aconsejo que utilizes parametros en lugar de concatenar
cadenas, eso te garantizara que todo funcione bien. Segundo, quita el
between y usa un where de la siguiente manera:

-Si deseara saber los x registros del mes de julio entonces mi
Fecha1 seria el 1ro de Julio 2006 a las 00:00:00
Fecha2 seria el 1ro de Agosto 2006 a las 00:00:00

de esta forma tu Where luciria asi:
WHERE (rechum.fecinitrab >= @FECHA1) AND (rechum.fecinitrab < @FECHA2)

Asi de esta manera buscara cualquier registro entre 20060701 00:00:00 y las
20060731 23:59:59
que es basicamente lo que te entendi que deseabas

"enorso" escribió en el mensaje
news:
> La sentencia siguiente funciona perfectamente si el campo fecinitrab es
> solo
> fecha. Es decir la agrupación por día es correcta
>
> SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM rechum
> WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# " &
> _
> "GROUP BY otrechum.fecinitrab ORDER BY otrechum.fecinitrab"
>
> Necesito que fecinitrab sea fecha y hora. Si ejecuto la sentencia
> anterior,
> no funciona bien ya que la parte hora hace que el campo fecinitrab no sea
> igual aunque sea el mismo día.
>
> Si cargo el dataset con el select siguiente me da un error que dice:
> Ha intentado ejecutar una consulta que no incluye la expresión
> especificada
> 'fecinitrab' como parte de una función de agregado.
>
> SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM rechum
> WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# " &
> _
> "GROUP BY DAY(otrechum.fecinitrab) ORDER BY otrechum.fecinitrab"
>
> ¿Que puede estar mal?
>
> Gracias



Respuesta Responder a este mensaje
#3 Eduardo Alvarado Meza
14/07/2006 - 04:55 | Informe spam
Entonces, es asi ... por lo menos en SQL server, no se si funciona para
Access:

SELECT DAY(rechum.fecinitrab) AS DIA, SUM(rechum.cant) as cant FROM rechum
WHERE (rechum.fecinitrab >= @FECHA1) AND (rechum.fecinitrab < @FECHA2)
GROUP BY DAY(rechum.fecinitrab) ORDER BY DIA

Ve si te corre...


"enorso" escribió en el mensaje
news:
Gracias por el interes y los consejos.
El problema no lo tengo a la hora de seleccinar datos entre dos fechas
determinadas.
Lo que necesito es calcular la suma del campo cant para cada dia. El
problema está en el GROUP BY. Si pongo logicamente GROUP BY fecinitrab, al
no
despreciar la parte horaria, agrupa aquellos registros en los que coincida
tanto la fecha como la hora, con lo cual para un mismo día calcula sin
agrupar ya que no existe ningun registro en el que la parte horaria sea
igual.

Si pongo GROUP BY DAY(fecinitrab) para que discrimine la parte horaria, es
cuando me da el error:
Ha intentado ejecutar una consulta que no incluye la expresión
especificada
'fecinitrab' como parte de una función de agregado.


"Eduardo Alvarado Meza" escribió:

Me parece que es cuestion de percepcion pero tu pregunta es valida, la
ultima sentencia sql no es correcta pero tu solucion esta mas cercana a
la
primera. Primero te aconsejo que utilizes parametros en lugar de
concatenar
cadenas, eso te garantizara que todo funcione bien. Segundo, quita el
between y usa un where de la siguiente manera:

-Si deseara saber los x registros del mes de julio entonces mi
Fecha1 seria el 1ro de Julio 2006 a las 00:00:00
Fecha2 seria el 1ro de Agosto 2006 a las 00:00:00

de esta forma tu Where luciria asi:
WHERE (rechum.fecinitrab >= @FECHA1) AND (rechum.fecinitrab < @FECHA2)

Asi de esta manera buscara cualquier registro entre 20060701 00:00:00 y
las
20060731 23:59:59
que es basicamente lo que te entendi que deseabas

"enorso" escribió en el mensaje
news:
> La sentencia siguiente funciona perfectamente si el campo fecinitrab es
> solo
> fecha. Es decir la agrupación por día es correcta
>
> SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM
> rechum
> WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# "
> &
> _
> "GROUP BY otrechum.fecinitrab ORDER BY otrechum.fecinitrab"
>
> Necesito que fecinitrab sea fecha y hora. Si ejecuto la sentencia
> anterior,
> no funciona bien ya que la parte hora hace que el campo fecinitrab no
> sea
> igual aunque sea el mismo día.
>
> Si cargo el dataset con el select siguiente me da un error que dice:
> Ha intentado ejecutar una consulta que no incluye la expresión
> especificada
> 'fecinitrab' como parte de una función de agregado.
>
> SQLSTR1 = "SELECT rechum.fecinitrab, SUM(rechum.cant) as cant FROM
> rechum
> WHERE rechum.fecinitrab BETWEEN #" + Fecha1 + "# AND #" + Fecha2 + "# "
> &
> _
> "GROUP BY DAY(otrechum.fecinitrab) ORDER BY otrechum.fecinitrab"
>
> ¿Que puede estar mal?
>
> Gracias



Respuesta Responder a este mensaje
#4 enorso
14/07/2006 - 17:16 | Informe spam
Desgraciadamente con access no funciona. Tendré que buscar otra solución.
Muchas gracias y saludos

"Eduardo Alvarado Meza" escribió:

Entonces, es asi ... por lo menos en SQL server, no se si funciona para
Access:

SELECT DAY(rechum.fecinitrab) AS DIA, SUM(rechum.cant) as cant FROM rechum
WHERE (rechum.fecinitrab >= @FECHA1) AND (rechum.fecinitrab < @FECHA2)
GROUP BY DAY(rechum.fecinitrab) ORDER BY DIA

Ve si te corre...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida