Ordenar DBGrid

Delphi

09/06/2004

Fala galera, esse eh meu primeiro post de muitos outros.... hehe... ainda sou novato no Delphi, mas assim q tiver condições espero poder contribuir muito c/ o Forum. Bom, vamos a minha duvida:

Tenho um form q tem 1 DBGrib e um RadioGroup c/ 4 itens, e cada um desse 4 itens são formas de ordenar os dados dentro do dbgrid (em tempo de execução), gostaria de saber qual o procedimento de quando o cara clicar no radio, o dbgrid dar tipo um refresh e ordenar pelo tipo do radio (ordenar por data, produto, preço e etc..)

[]s DB! :twisted:


Mascarade

Mascarade

Curtidas 0

Respostas

Otto

Otto

09/06/2004

ja que vc ta usando um radiogroup eu faria assim:


No OnClick no radiogroup vc faz:

With query1 do Begin
  if active then close;
  case radiogroup.itemindex of
     0: SQL.Text := ´Select * from tabela order by nome´;  
     1: SQL.Text := ´Select * from tabela order by endereco´;  
     2: SQL.Text := ´Select * from tabela order by cidade´;  
     3: SQL.Text := ´Select * from tabela order by telefone´;  
  End;//Case
  Open; // Abrir query
End; // with


no radio gorup, os itens tem que esta assim:

Nome, Endereco, Cidade e telefone. olhando ai vc vai ter a ideia.... :wink:


GOSTEI 0
Mascarade

Mascarade

09/06/2004

Valeu cara, mas na hora q eu clico no radio ele nao atualiza automaticamente....

[]s DB! :twisted:


GOSTEI 0
Otto

Otto

09/06/2004

blz, então me faz o seguinte, cola aqui o codigo, os itens que vc tem no radiogroup e os campos que vc tem na tabela... :wink:


GOSTEI 0
Mascarade

Mascarade

09/06/2004

campos da tabela: Data, Produto, Status
campos do RadioGroup: Data, Produto, Pago, Não Pago

sendo q o pago e não pago deveria ser uma consulta c/ ASC e DESC consecutivamente.


[]s DB! :twisted:


GOSTEI 0
Otto

Otto

09/06/2004

ok, faça o seguinte teste:

With query1 do Begin 
  if active then close; 
  case radiogroup.itemindex of 
     0: SQL.Text := ´Select * from NomeDaTabela order by data´;  
     1: SQL.Text := ´Select * from NomeDaTabela order by produto´;  
     2: SQL.Text := ´Select * from NomeDaTabela order by status´;  
  End;//Case 
  Open; // Abrir query 
End; // with


verifique se a query ta ligada no componente de conexão com o banco, e se o dbgrid ta ligado ao datasource e o datasource ligado a query.

so coloquei pra organizar por Data, produto e status...

testa e ver no que que dar... :wink:


GOSTEI 0
Mascarade

Mascarade

09/06/2004

Entao cara, eu jah tinha feito dessa meneira qdo vc colocou ai... mas qdo eu clico na opcao, ele nao ordena na hora, ele fica stático, como ele abriu.... :oops:

[]s DB! :twisted:


GOSTEI 0
Otto

Otto

09/06/2004

Olha, aqui em casa eu fiz assim, no ontitleclick do dbgrid:


procedure TfmConUsuario.DBGrid1TitleClick(Column: TColumn);
begin
  Screen.Cursor := crHourGlass;
  if zq1.Active then zq1.Active := false;

  Case Column.Index of
     0 : zq1.SQL.Text := ´Select * from tbUsuarios Order by Nome´;
     1 : zq1.SQL.Text := ´Select * from tbUsuarios Order by Login´;
    Else
       MessageBox(0,´Não é permitido organizar por Este campo !´,´ORGANIZAÇÃO´,
                    MB_OK+MB_ICONERROR);
  end; //case

  zq1.Open;
  Screen.Cursor := crDefault;
end;


funciona tudo Ok.... bom, pelo menos valeu a intenção... :wink:


GOSTEI 0
POSTAR