Titulos da DBGrid
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
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
Curtidas 0
Respostas
Adilsond
11/02/2004
Coloque o Index da coluna + 1;
´Order by ´ + IntToStr(Indicedacoluna + 1)
´Order by ´ + IntToStr(Indicedacoluna + 1)
GOSTEI 0
Nekas
11/02/2004
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)
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)
GOSTEI 0
Adilsond
11/02/2004
qrydinamica.SQL.Add(´order by ´ + IntToStr(Column.Index + 1));
GOSTEI 0
Nekas
11/02/2004
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));
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));
GOSTEI 0
Adilsond
11/02/2004
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.
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.
GOSTEI 0
Nekas
11/02/2004
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
de
SQL.Add(´order by ´ + Column.FieldName);
para
SQL.Add(´order by ´ + IntToStr(Column.Index + 1));
Grato, amigo.
Abraço,
Nekas
GOSTEI 0