localizando linha em uma query...
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.
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
Curtidas 0
Respostas
_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:
Então você poderia fazer:
E em outra parte do programa manipular apenas o ´order by´
Rod.
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
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.
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.
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