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 03-11-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
pasar una variable a una sentencia sql

Me gustaria saber como puedo hacer para pasar una variable en una sentencia sql.
Situemonos, tengo un dbgrid, y lo que quiero es que me ordene los datos dependiendo del titulo de la columna que hayamos pulsado. Esto se supone que lo tengo que hacer en el evento OnTitleClick del dbgrid, el cual segun la ayuda, pone que captura la columna que hemos pulsado en la variable Column de tipo TColumn.
Ahora bien, como se lo paso???; si la sentencia vendria a ser algo del tipo: select * from tabla order by ????, donde los ? serian la variable en cuestion.
Un saludo.
Responder Con Cita
  #2  
Antiguo 03-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Depende de qué base de datos uses. En Paradox pondrías:

select * from tabla order by :campo

y asignarías el valor del parámetro con:

Query1.ParamByName('campo').AsXXX

donde XXX será String, Integer, Float, etc., dependiendo de qué tipo de campo sea.

// Saludos
Responder Con Cita
  #3  
Antiguo 03-11-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Estoy usando interbase, por cierto, no me ha quedado muy clara tu respuesta ... que dura es la vida del novato.
Muchas gracias!
Responder Con Cita
  #4  
Antiguo 03-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
acrophet comentó:
Estoy usando interbase, por cierto, no me ha quedado muy clara tu respuesta ... que dura es la vida del novato.
Muchas gracias!
Disculpa, me equivoqué. No se trata de parámetros como los que usa una consulta SQL.

Lo qe puedes hacer es declarar una constante para la consulta:

Código:
const
  fmtSql = 'select * from tabla order by %s';
Cada vez que quieras ejecutar la consulta pasas como sentencia SQL lo siguiente:

Format(fmtSql, [nombre del campo]);

Esto te regresa una cadena ya con la consulta adecuada.

// saludos
Responder Con Cita
  #5  
Antiguo 03-11-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Mas o menos entiendo por donde vas, pero con lo que tu me dices, necesito saber el campo en el que hacer la consulta, cosa que no se.
Como he puesto en el primer post, el evento OnTitleClick se supone que captura el titulo (campo) que he pulsado.
Mi duda es como poder pasarselo a la sentencia sql.
Gracias por la paciencia y la velocidad de las respuestas
Responder Con Cita
  #6  
Antiguo 03-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Puedes usar Column.Field.FieldName en el evento OnTitleClick para saber el nombre del campo que corresponde. Así, lo que usarías sería:

Format(fmtSql, [Column.Field.FieldName]);

// Saludos
Responder Con Cita
  #7  
Antiguo 03-11-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Muchisimas gracias Roman, me funciona perfectamente tal y como queria.
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 23:14:39.


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