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 17-10-2005
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 17-10-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 17-10-2005
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 18-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
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..

__________________
No todo es como parece ser...
Responder Con Cita
  #5  
Antiguo 18-10-2005
Alejandro Vilte Alejandro Vilte is offline
Registrado
 
Registrado: oct 2005
Posts: 6
Poder: 0
Alejandro Vilte Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 19-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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.
__________________
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 21:27:23.


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