localizando linha em uma query...

Delphi

27/09/2005

Olá, colegas!

Estou querendo fazer um procedimento aqui, só que não estou conseguindo. Pois bem, vamos lá:

Tenho uma query onde faço uma consulta do tipo SELECT, FROM, WHERE E ORDER BY.

O que quero fazer é via linha de código, alterar idependentemente do que estiver no SELECT e FROM, WHERE e etc. Eu quero pegar somente a partir do ORDER BY.

Quero isso para somente alterar a ordem de classificação.


Thiagopedro

Thiagopedro

Curtidas 0

Respostas

_rodfaria_

_rodfaria_

27/09/2005

Quando sua query varia não é indicado que a clásula sql seja viciada na propriedade SQL do componente.

Monte-a em tempo de execução para ganhar flexibilidade.

Que tal uma classe mais ou menos assim:
    TComandoSQL = class

    private
        FWhere: string;
        FSelect: string;
        FOrderBy: string;
        FFrom: string;
        function GetCompleto: string;

    public
        property Select:string read FSelect write FSelect;
        property From:string read FFrom write FFrom;
        property Where:string read FWhere write FWhere;
        property OrderBy:string read FOrderBy write FOrderBy;

        property Completo:string read GetCompleto;
    end;
...
function TComandoSQL.GetCompleto: string;
begin
    Result:=´select ´ + FSelect+´ from ´+ FFrom+´ where ´+FWhere;
    if Length(FOrderby) > 0 then
        Result:=Result+´ order by ´+FOrderby;
end;

Então você poderia fazer:
private
  x:TComandoSQL;
...
  x.Select := ´codigo,nome´;
  x.From:=´clientes´;
  x.Where:=´codigo > 100´;  

E em outra parte do programa manipular apenas o ´order by´
case algumacoisa of
  1:x.OrderBy:=´algumcampo´;
  2:x.OrderBy:=´outrocampo´;
  3:x.OrderBy:=´´;
end;
Query1.SQL := x.Completo;
...


Rod.


GOSTEI 0
Rjun

Rjun

27/09/2005

Colocar código SQL no meio do seu código de programa, na minha opinião, é algo bem porco....

Coloque seu código SQL dentro da sua query, da seguinte forma.

SELECT 
  Campo1,
  Campo2,
  Campo3
FROM 
  Tabela
WHERE 
  Codicao
ORDER BY
  /* Campo */    <= Coloque dessa forma mesmo


Deixe a linha com comentário por último. No seu código de programa, basta alterar a última linha pelo campo que você quer ordenar.

ADOQuery1.SQL[ADOQuery1.SQL.Count - 1] := Campo;



GOSTEI 0
POSTAR