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 03-01-2007
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Red face ORDER BY {order_by_expression}

Hola compañeros.

¿Que tengo?
Tengo una serie de consultas realizadas en Store procedures en el lado del servidor.
Estas consultas tienen sus resultados ordenados según la clausula ORDER BY escrita del siguiente modo
Código SQL [-]
select Campo1, Campo2, Campo3, Campo4
from T1
order by Campo1
De este modo el usuario tiene siempre el conjunto de datos del resultado de la ejecución de la consulta ordenado por el mismo campo.

¿Que deseo?
Quiero hacer lo siguiente: Que el usuario pueda establecer para la misma consulta el campo por el cual desea tener ordenado el conjunto de datos de forma dinámica.Es decir, poder pasar de alguna manera un parametro donde desde el programa el usuario establezca el campo deseado que establezca el orden.

He visto que se pueden utilizar ORDER BY {order_by_expression}, de este modo si quiero ordenar por el campo segundo de la lista de selección de la SELECT, lo haría así

Código SQL [-]
select Campo1, Campo2, Campo3, Campo4
from T1
order by 2

pero estoy viendo como poderlo usar y su sintaxis para que ese "by 2", pueda ser como un parametro del tipo "by @ParametroDeOrden" y asignarle a ese parametro @ParametroDeOrden cualquiera de los valores 1,2,3,4 y de ese modo tener dinámico el orden.

Si alguien me puede anexar de forma resumida, o como sea, un ejemplo o explicación de como hacerlo..... Mientras yo buscaré en la web, y en el momento lo tenga solucionado, publicaré como lo puedo hacer.

Nota: Sé que lo podría conseguir utilizando la creación desde el código de programa de una SQL y añadiendo a la sintaxis de la clausula ORDER BY el campo deseado, pero al tenerlo en el lado servidor y tratarse de muchas consultas, preferiría hacerlo del modo que busco en esta consulta.

Gracias a todos, y un saludo.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.

Última edición por Cabanyaler fecha: 03-01-2007 a las 12:45:19.
Responder Con Cita
  #2  
Antiguo 03-01-2007
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Bueno a falta de conocer como pasarlo como parametro, esta es la mejor "y única" forma que he visto para hacerlo. Aunque no me mola mucho, ya que el orden se establece en el lado cliente, con el consecuente coste de proceso.

Cita:
VCL Reference
TCustomADODataSet.Sort

TCustomADODataSet See also

Specifies the sort order of the recordset.

property Sort: WideString;

Description

Set Sort to establish or change the list of fields on which the recordset is sorted. Set sort to the name of a single field or to a comma-separated list of fields. Each field may optionally be followed by the keyword ASCENDING or DESCENDING to specify a sort direction for the field. If one of these keywords is not used, the default sort direction for the field is ascending. Set Sort to an empty string to reset the recordset to the sort order originally used when the recordset’s data was first retrieved.

ADOQuery1.Sort := 'LastName ASC, DateDue DESC'

Read Sort to determine the field (or fields) on which the recordset is sorted.

Note: If the cursor is client-side (the dataset component’s CursorLocation property or that of an associated TADOConnection component is clUseClient) and no index already exists matching the requested field sort order, a temporary index is created. Resetting the sort order by setting Sort to an empty string automatically deletes the temporary index.

No obstante si sabeis, conoceis, os han contado..... otra solución como la que yo busco..., gracias
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #3  
Antiguo 04-01-2007
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
También lo podría realizar pasando un parametro de tipo numérico y utilizar una estructura "if then else" para establecer según el valor de ese parametro un "ORDER BY" u otro.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
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
error en order by antonio75 SQL 4 18-11-2006 12:02:10
Datetime y Order by. ppb SQL 2 20-06-2005 13:16:14
Tab Order kepacha Varios 5 31-01-2005 13:32:40
Order by VRO SQL 6 31-08-2004 08:17:05
Order by ...... chutipascal Firebird e Interbase 8 24-06-2003 14:46:21


La franja horaria es GMT +2. Ahora son las 15:15:57.


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