![]() |
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 *** :confused: 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. |
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
|
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. :) |
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 |
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. |
| La franja horaria es GMT +2. Ahora son las 06:27:16. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi