Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2006
Avatar de superhopi
superhopi superhopi is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 128
Poder: 22
superhopi Va por buen camino
Smile Consulta complicada

Hola chicos, tengo un (gran) problema con una consulta que quiero hacer.

En un programa de pedidos que he hecho, he abierto un apartado para mostrar solo los pedidos de un año en concreto (imaginense que tengo pedidos de 2004,2005 y 2006 y solo quiero mostrar los de 2006). El problema que el apartado fecha tiene el formato "xx/xx/xxxx" y no se como hacer la consulta.
En este apartado queria que aparecieran en una lista todos los años diferentes que hay en los pedidos, de forma que el usuario seleccionara el año que quiere mostrar en el programa, de forma que si el campo tuviera solo el año la consulta seria:

Código SQL [-]
select distinct fecha
from pedidos

El problema empieza aqui, ya que el campo fecha es del formato que he mencionado anteriormente...
¿Alquien me puede intentar ayudar? Lo agradeceria mucho porque el programa ya lo tengo funcinando desde hace unos meses y veo que el proximo año tendre muchíiiiiisimos pedidos y va a ser costoso de mirar.

Gracias de antemano.
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre.
Responder Con Cita
  #2  
Antiguo 29-06-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código SQL [-]
select distinct datepart(year, fecha)
from pedidos
order by fecha


Código SQL [-]
select *
from pedidos
where datepart(year, fecha) ='2006'
order by fecha
__________________


Última edición por ContraVeneno fecha: 29-06-2006 a las 23:03:39.
Responder Con Cita
  #3  
Antiguo 30-06-2006
Avatar de superhopi
superhopi superhopi is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 128
Poder: 22
superhopi Va por buen camino
Lightbulb Llamada al proc. no valida

Muchas gracias, esta sentencia me viene al pelo, pero me da error:

"No se han especificado valores para algunos de los parametros requeridos"

Entonces en parameters le asigno valor date a year y se pone 0:00:00

"Llamada al procedimiento no valida"

He tenido que quitarle order by ... porque me decia que era incompatible con distinct ...

Solo quiero que muestre los distintos años de pedidos que tengo... ¿donde puede estar el error?
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre.
Responder Con Cita
  #4  
Antiguo 30-06-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Los ejemplo que puse, funcionan perfectamente, ya los probé.

¿por qué no pones tu consulta para ver donde esta el error?

Order by no tienen ningún problema al trabajar con distinct.

Pon tu consulta y la revisamos.
__________________

Responder Con Cita
  #5  
Antiguo 30-06-2006
Avatar de superhopi
superhopi superhopi is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 128
Poder: 22
superhopi Va por buen camino
Mira esto:

He estado intentando y sigue sin funcionarme.
En un form tengo un dbgrid que es donde van a aparecer los datos, en un datasource tengo el ADOquery donde aparece el codigo que tu me has escrito antes:

Código SQL [-]
select distinct datepart(year, fecha)
from pedidos
order by fecha

Cuando abre el form aparecen los errores que comentaba antes.

La tabla de donde extrae los datos tiene los siguientes campos:
pedidos{num, fecha, proveedor, estado, nota} donde fecha es un campo date/time de una tabla de access

Muchas gracias
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre.
Responder Con Cita
  #6  
Antiguo 30-06-2006
Avatar de jjorell
jjorell jjorell is offline
Miembro
 
Registrado: jun 2006
Posts: 22
Poder: 0
jjorell Va por buen camino
Hola!

Primero que nada, vale la pena aclarar que la las siguientes sentencias funcionan perfectamente en MS SQL Server:

Código SQL [-]
 
select distinct datepart(year, fecha)
from pedidos
order by fecha
 
select distinct datepart(yy, fecha)
from pedidos
order by fecha

,Pero si estas utilizando Access como dices en el último mensaje, la sentencia debería ser:

Código SQL [-]
 
select distinct datepart("yyyy", fecha)
from pedidos

y efectivamente el Order By da conflicto con el distinct , pero yo hice una serie de pruebas y de todas formas siempre lo ordena ascendentemente. Por lo tanto la sentencia anterior es equivalente y puede servirte.

NOTA: Te recomiendo que deberias tratar de usar una base de datos un poco mas potente como SQL Server, MySQL, Sybase, etc. Tiene muchas mas posibilidades al tener este tipo de requerimientos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta Complicada tcp_ip_es SQL 2 09-06-2006 16:05:30
Consulta complicada Luciano M. SQL 6 01-12-2005 19:30:15
Consulta complicada cval SQL 4 21-09-2005 18:04:27
Consulta Complicada NickName SQL 6 29-04-2004 07:33:31
Complicada consulta mosorio SQL 3 12-08-2003 20:12:00


La franja horaria es GMT +2. Ahora son las 09:32:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi