Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como sustituir variables en SQL (https://www.clubdelphi.com/foros/showthread.php?t=26223)

erasmorc 17-10-2005 16:17:22

Como sustituir variables en SQL
 
Buenos dias,

La situacion es la siguiente tengo un reporte de una tabla cualquiera que lo hago con Quick Report al cual le coloco un componente Query de SQL yo quiero organizar este reporte por diferentes campos de esta tabla y que yo pueda seleccionar el campo por el cual quiero hacerlo, en fin esa parte esta controlada la parte que no se como hacer es sustituir en el order by que en vez del campo de la tabla sea una variable que contiene el campo por el cual quiero organizar.
Ej.:
Select * From Clientes
Order by codigo

esa seria la instruccion normal yo quisiera algo como esto
Select * From Clientes
Order by variable

en donde variable contiene el campo por el cual quiero ordenar como puedo hacer esta sustitucion que en otros lenguaje se llama macrosustitucion.

Un Saludo

epuigdef 17-10-2005 16:32:42

Buenas!


La forma más fácil sería montar la sentencia SQL justo antes de abrir el report:

query.sql.text := 'SELECT * FROM CLIENTES order by ...'

Espero que te sirva

Un saludo

Edu

Caro 17-10-2005 16:58:34

Hola estoy de acuerdo con lo que dice epuigdef, solo quiero aumentar este pequeño detalle que talvez sea innecesario porque la idea ya esta dada.

query.sql.text := 'SELECT * FROM CLIENTES order by '+variable;

Saludos

lucasarts_18 18-10-2005 15:14:11

Hola:

algo así debería ser..

Código Delphi [-]
  query.sql.text := 'SELECT * FROM CLIENTES order by : variable';
 query.params[0].asvariant := edit1.text;
 query.open

No tengo delphi en estos momentos, así que no sé si está bien la sentencia, pero en definitiva debes usar parametros...

Hasta luego..

:eek:

Alejandro Vilte 18-10-2005 20:49:42

hasta ahora conosco 2 modos.
Una utilizando el parámetro del tquery (parambyname..(creo que asi)., que mas abajo pusieron un ejemplo. Y otro pasando la variable directamente a la sentencia sql, que es lo que estoy utilizando.
Por ejemplo:
supongamos las varialbles a:integer; b:string;

sería:

('select * from personas where dni='+inttostr(a)+'');
('select * from personas where apellido='+quotedstr(b)+'');

En limpio seria ( '+FUNCION(VARIABLE)+' ) sin los parentesis.

Tene en cuenta el nombre de la funcion inttostr, quotedstr...y asi cualquier otro valor que vayas a insertar en el query. Si, queres ver como sale el query antes de dispararlo, generalemente acostumbro mostrar el query con un showmessage(query.sql.text); donde query es componente o variable tquery.

Vilte, Alejandro

Lepe 19-10-2005 08:48:25

Otra más:

Código Delphi [-]
const genericSelect = 'select %s FROM %s where %s order by %s'
var OrderBy:string;

begin
 OrderBy := 'codigo';
  qry.Sql.text := format( genericSelect,
                                 ['Nombre, codigo',
                                 table1.tablename,
                                 'codigo = 5',
                                 OrderBy]);


saludos.


La franja horaria es GMT +2. Ahora son las 23:18:08.

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