De forma  nenhuma, pois atraves do clientdataset e possível criar
dinamicamente índices em memória e ordena-los.

 

E mais rápido e performatico usar a ordenação em memória do clientdataset,
pois economiza recursos e torna mais rápido a obtenção de registros do banco
não usando order by.

 

Segue um exemplo de função q trabalha em conjunto com o dbgrid para odenacao
e clientdataset, ela esta completamente implementada no exemplo do DDD 8  no
meu link de downloads.

 

http://cc.codegear.com/Author/795118

 

procedure TDM.OrdenaDataSetGrid(var CDS: TClientDataSet; var DBG: TDBGrid;

  Column: TColumn);

const

  idxDefault = 'DEFAULT_ORDER';

var

  strColumn : string;

  i         : integer;

  bolUsed   : boolean;

  idOptions : TIndexOptions;

begin

  strColumn := idxDefault;

 

  if Column.Field.FieldKind in [fkCalculated, fkLookup, fkAggregate] then

    Exit;

 

  if Column.Field.DataType in [ftBlob, ftMemo] then

    Exit;

 

  for i := 0 to DBG.Columns.Count - 1 do

  begin

    DBG.Columns[i].Title.Font.Style := [];

  end;

 

  DBG.Columns[Column.Index].Title.Font.Style := [fsBold];

 

  bolUsed := (Column.Field.FieldName = CDS.IndexName);

 

  CDS.IndexDefs.Update;

  for i := 0 to CDS.IndexDefs.Count - 1 do

  begin

    if CDS.IndexDefs.Items[i].Name = Column.Field.FieldName then

    begin

      strColumn := Column.Field.FieldName;

      case (CDS.IndexDefs.Items[i].Options = [ixDescending]) of

        True  : idOptions := [];

        False : idOptions := [ixDescending];

      end;

    end;

  end;

 

  if (strColumn = idxDefault) or (bolUsed) then

  begin

    if bolUsed then

      CDS.DeleteIndex(Column.Field.FieldName);

    try

      CDS.AddIndex(Column.Field.FieldName,

                   Column.Field.FieldName,

                   idOptions,

                   '',

                   '',

                   0);

      strColumn := Column.Field.FieldName;

    except

      if bolUsed then

        strColumn := idxDefault;

    end;

  end;

 

  try

    CDS.IndexName := strColumn;

  except

    CDS.IndexName := idxDefault;

  end;

end;

 

 

 

 

 

 

Atenciosamente,

 

Bruno Lichot

CodeGear Product Evangelist

 

http://www.codegear.com

http://cc.codegear.com/Author/795118

 

 

 

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Vitor Redes
Enviada em: quarta-feira, 3 de outubro de 2007 16:34
Para: delphi-br@yahoogrupos.com.br
Assunto: RES: [delphi-br] DBexpress e Firebird

 

Mas, teoricamente, o ORDER BY é o que dita se o select vai ser indexado ou
não. Carregar um select sem índice em memória para depois organiza-lo,
seguindo essa lógica, demoraria muito mais.

Vitor.

_____ 

De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
[mailto:delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
] Em
nome de Bruno Lichot
Enviada em: quarta-feira, 3 de outubro de 2007 15:53
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Assunto: RES: [delphi-br] DBexpress e Firebird

Não e aconselhavel o uso de order by e clausulas SQL por conta do peso de
processamento q este usa, o ideal e usar no clientdataset índices em memória
q fazem a mesma coisa so q menos custoso e mais rápido.

No meu exemplo do dd 8 mostra como fazer isso

http://cc.codegear. <http://cc.codegear.com/Author/795118> com/Author/795118

abs

BL

De: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
[mailto:[EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br>
os.com.br] Em
nome de Marcelo Mendes de Oliveira
Enviada em: quarta-feira, 3 de outubro de 2007 14:02
Para: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
Assunto: RES: [delphi-br] DBexpress e Firebird

Nenhum problema só quero saber o porque que isto acontece, pois até então
nunca tinha visto este tipo de bug

Marcelo Mendes de Oliveira 
Analista de Informática
Tel.: + 49 3551-0177
Fax: + 49 3541-0423
IGUAÇU - celulose, papel s.a
www.iguacucelulose.com.br <http://www.iguacuce
<http://www.iguacucelulose.com.br/> lulose.com.br/> 
P Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO
AMBIENTE!
Before printing this document, think about your responsibility and care for
the ENVIRONMENT!

_____ 

De: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
<mailto:delphi-br%40yahoogrupos.com.br>
[mailto:[EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br>
os.com.br <mailto:delphi-br%40yahoogrupos.com.br>
] Em
nome de Davi Eduardo Borges Wall
Enviada em: quarta-feira, 3 de outubro de 2007 13:51
Para: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
<mailto:delphi-br%40yahoogrupos.com.br> 
Assunto: RES: [delphi-br] DBexpress e Firebird

Qual seria o problema em utilizar o OrderBy?

De: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
[mailto:[EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br>
os.com.br] Em nome de Marcelo Mendes de Oliveira
Enviada em: quarta-feira, 3 de outubro de 2007 13:14
Para: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
Assunto: [delphi-br] DBexpress e Firebird

Boa Tarde Pessoal, 

Gostaria de saber se algum amigo sabe o que acontece quando o client Dataset
trás os dados desordenados, tipo ele traz assim 40, 41, 42, 43, 50, 44, 45,
46, 51, 47, 48, 49 e não na ordem como está na base de dados, ai para que
ele ordene eu tenho que dar um order by no SQLDataSet.

Alguém sabe como resolver isto??

Obrigado pela ajuda

Marcelo Mendes de Oliveira 
Analista de Informática
Tel.: + 49 3551-0177
Fax: + 49 3541-0423
IGUAÇU - celulose, papel s.a
www.iguacucelulose.com.br <http://www.iguacuce
<http://www.iguacuce <http://www.iguacucelulose.com.br/> lulose.com.br/>
lulose.com.br/> 
P Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO
AMBIENTE!
Before printing this document, think about your responsibility and care for
the ENVIRONMENT!

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]

__________ Informação do NOD32 IMON 2569 (20071003) __________

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset. <http://www.eset.com.br> com.br

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]

 

__________ Informação do NOD32 IMON 2570 (20071003) __________

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br



[As partes desta mensagem que não continham texto foram removidas]

Responder a