Fórum Titulos da DBGrid #213266

11/02/2004

0

E ai Galera, Beleza!!

Estou precisando de um help, é o seguinte:

Estou usando uma DBGrid onde o text do SQL é obtido após ler uma arquivo texto. (LoadFromFile).

Então, eu fiz o Select para mostrar os campos usando uma mascara tipo Select CLI_ID as CODIGO.... quando eu vou complementar meu SQL para ele adicionar um SQL.ADD(´ order by ´+ nome do campo) ele dá um erro porque o campo CLI_ID foi substituido pelo alias CODIGO, como faço para indexar por Coluna clicando no ClickOnTitle.

* :roll: Ufa ! espero ter sido claro.

Um abraço a todos

Nekas


Nekas

Nekas

Responder

Posts

11/02/2004

Adilsond

Coloque o Index da coluna + 1;

´Order by ´ + IntToStr(Indicedacoluna + 1)


Responder

Gostei + 0

11/02/2004

Nekas

Adilson, tentei mas não deu certo, ai segue minha procedure.

procedure TfrmPrincipal.DBGrid1TitleClick(Column: TColumn);
begin

qrydinamica.Active:=false;
qrydinamica.SQL.Clear;
qrydinamica.SQL.Add(atual_sql);
qrydinamica.SQL.Add(´order by ´ + Column.FieldName);
qrydinamica.Active:=true;

end;

* como mudei o nome do campo o sistema dá erro.


-------------------------------------------------------------------
[quote=´AdilsonD´]Coloque o Index da coluna + 1;

´Order by ´ + IntToStr(Indicedacoluna + 1)



Responder

Gostei + 0

11/02/2004

Adilsond

qrydinamica.SQL.Add(´order by ´ + IntToStr(Column.Index + 1));


Responder

Gostei + 0

11/02/2004

Nekas

Adilson, apos esta tentativa o sistema retorna este erro abaixo:
Quando você cita para somar + 1 o que o sistema deveria entender ?
Somar + 1 no indice da coluna clicada? Isto resultaria na primeira indice(0) + 1 = 1 dá erro, só dá retorno positivo na segunda coluna indice(1) +1 = 2 , não sei porque?


[quote=´AdilsonD´]qrydinamica.SQL.Add(´order by ´ + IntToStr(Column.Index + 1));



Responder

Gostei + 0

11/02/2004

Adilsond

P: Quando você cita para somar + 1 o que o sistema deveria entender ?
R: No comando sql voce pode definir a clausula order by de duas maneiras:
1 - Informando o nome da coluna
2 - Informando a posição da coluna que começa com 1

No seu exemplo estou passando a posição da coluna. Como o índice das colunas da grid começam com 0, estou somando 1 para informar que desejo ordenar pela primeira coluna.

O problema é que qdo voce fecha a sua query, os campos da query não existem mais na DBGrid. Para resolver o problema:

with qrydinamica do
begin
DisableControls;
try
if Active then
Close;
SQL.Clear;
SQL.Add(atual_sql);
SQL.Add(´order by ´ + Column.FieldName);
Open;
finally
EnableControls;
end;
end;

Outra coisa. Na variável atual_sql não pode conter a clausula order by, pois voce está adicionando-a no final.


Responder

Gostei + 0

11/02/2004

Nekas

Adilson, deu certinho agora, só fiz uma alteração neste linha abaixo, assim como você me passou anteriormente.

de
SQL.Add(´order by ´ + Column.FieldName);
para
SQL.Add(´order by ´ + IntToStr(Column.Index + 1));


Grato, amigo.

Abraço,

Nekas


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar