FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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. |
#2
|
||||
|
||||
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
__________________
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! |
#3
|
||||
|
||||
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. |
#4
|
|||
|
|||
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 |
#5
|
||||
|
||||
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. |
|
|
|