Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2005
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Order by con parámetros

Hola Foro:

Necesito una ayudita:

Estoy utilizando Delphi 5.0 e InteBase.

Saben si se pueden utilizar parámetros en el "order by" de una consulta?

Estoy haciendo:

Select
Customer_code Codigo,
Customer_name Nombre
From Customer
Order by :RR


Luego defino el parámetro como Integer o String (para probar de las dos maneras, (Order by 2 u Order by Customer_name)

y Luego pruebo de las dos maneras

query2.CLOSE;
query2.parambyname('RR').ASINTEGER:=2;
query2.OPEN;

o...

query2.CLOSE;
query2.parambyname('RR').ASSTRING:='Customer_code';
query2.OPEN;

y de las dos maneras me aparece un error

*** Token Unknown ***

Saben que estoy haciendo mal?

Lo puedo resolver escribiendo la consulta en tiempo de ejecución, pero me parece más elegante utilizar los parámetros.

Desde ya muchas gracias por su atención.
Responder Con Cita
  #2  
Antiguo 02-12-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Bueno es que la definicion de un orden no es Entero ni es una Cadena de caracteres.
(No estoy seguro, prueba con Variant, a ver a ver)

Lo que haria es
Código Delphi [-]
var
  rSlq:String:
begin
  rSql:='Select Customer_code Codigo,Customer_name Nombre From Customer '+
          'Order by %s';
  query2.CLOSE;
  query2.Sql.Text:=Format(rSql,['Customer_code']);
  query2.OPEN;
end;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 02-12-2005
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
La solución propuesta por vtdeleon está buena, pero es otra manera de escribir la consulta en tiempo de ejecución. No estamos utilizando parámetros.

Probé definir el parametro como variant y el resultado fué el mismo error.

Gracias vtdeleon.
Responder Con Cita
  #4  
Antiguo 14-12-2005
FOURIER FOURIER is offline
Miembro
 
Registrado: dic 2005
Posts: 40
Poder: 0
FOURIER Va por buen camino
espero te sea de ayuda

En El Order by sólo pueden ir variables de las tablas o valores de las consultas.... si lo que quieren es ustedes ordenar con respecto al campo que quieran, no hay inconveniente alguno en que hagan eso;

aunque podría ser
var
String SCampo;
DM.Q.SQL.Text:='Select Customer_code Codigo, Customer_name Nombre From Customer Order by ';
suponiendo que los campos lo tienes en un Combobox
Scampo:=Combobox.Text;
DM.Q.SQL.Text:=DM.Q.SQL.Txt+SCampo;
DM.Q.Open;
Si es un edit donde especificas el campo del orden
Scampo:=Edit.text.Text;
DM.Q.SQL.Text:=DM.Q.SQL.Txt+Edit.text;
DM.Q.Open;

espero te sea de ayuda
Responder Con Cita
  #5  
Antiguo 14-12-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
El problema, según entiendo, es que al pasar un parámetro AsString, Delphi lo insertará entre comillas simples, por tanto, ya no es un token válido.

Con número enteros, no he hecho pruebas.

Aconsejo utilizar la forma de vtdeleon, desde mi punto de vista, es también elegante; sobre todo usando un archivo de constantes para los sqls (archivo de texto), e incluso separado de la base de datos, para que despues de instalar el programa, pueda cambiarse los sqls sin tener que recompilar el proyecto.

saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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


La franja horaria es GMT +2. Ahora son las 05:45: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