PDA

Ver la Versión Completa : pasar una variable a una sentencia sql


acrophet
03-11-2003, 16:17:39
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.

roman
03-11-2003, 16:24:28
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

acrophet
03-11-2003, 16:26:22
Estoy usando interbase, por cierto, no me ha quedado muy clara tu respuesta:confused: ... que dura es la vida del novato.
Muchas gracias!

roman
03-11-2003, 16:40:12
acrophet comentó:
Estoy usando interbase, por cierto, no me ha quedado muy clara tu respuesta:confused: ... 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:


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

acrophet
03-11-2003, 16:52:25
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 ;)

roman
03-11-2003, 16:57:51
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

acrophet
03-11-2003, 17:01:02
Muchisimas gracias Roman, me funciona perfectamente tal y como queria. :D