Lo que pasa es que no vas a poder ordenar una Query por una columna que no esté incluida en la sentencia Select
Para empezar, lo incluyes en la Select y, luego puedes hacer algo así (no lo he probado por lo que a lo mejor no funciona)
Código:
SELECT Mueble.Codmueble,Mueble.Descripcion,Rubro.Nombre,Seccion.Nombre, :campo
FROM Mueble INNER JOIN Rubro ON Mueble.Rubro=Rubro.CodRub
INNER JOIN Seccion ON Mueble.Seccion=Seccion.Codigo
WHERE :ORDEN BETWEEN ESDE AND :HASTA
ORDER BY :campo;
procedure TForm18.ListarClick(Sender: TObject);
begin
If Lista.Text='Código' Then
begin
ModeloDatos.Consulta1.Close;
ModeloDatos.Consulta1.ParamByName('ORDEN').AsString := 'CodMueble';
ModeloDatos.Consulta1.ParamByName('DESDE').AsInteger := StrToInt(Desde.Text);
ModeloDatos.Consulta1.ParamByName('HASTA').AsInteger := StrToInt(Hasta.Text);
ModeloDatos.Consulta1.ParamByName('campo').AsString := MiTablaMiCampo.FieldName;
ModeloDatos.Consulta1.Open;
end;
lo de FieldName lo digo de memoria, quizás no es exactamente así la propiedad de TField, pero puedes investigar por allí
Espero te sirva