Fórum Apresentar em um GRID em ordem Decrescente #418771

20/06/2012

0

Olá Galera sou novato aqui no DevMedia.

Vou dar uma dica para você que está quebrando a cabeça para
fazer os registro serem apresentados em ordem decrescente na GRID.
Faça o seguinte.


Quem trabalha com SqlQuery, DataSetProvider e ClientDataSet e DataSouce
eu acostumei colocar esses apelidos neles.
SqlQuery = Qry
DataSetProvider = Dsp
ClientDataSet = Cds
DataSouce = Dts

no caso vc tem uma Qry, Dsp,Cds e um Dts para inserir dados! correto!.
então faça o seguinte crie mais uma Qry,Dsp,Cds e um Dts para pesquisar.
Na propriedade SQL da Qry, insira uma select parecida com essa.

select * from TABELA_DO_BANCO
order by CAMPO_COLUNA_DESEJADA descending

pronto agora ligue na o Dts da pesquisa no Grid desejado.
o comando ORDER BY pode ter muita utilidade! ele ordena por nome por data por codigo...
enfim é ótimo para situações como essa.

para atualizar toda hora que tiver novos registro faça o seguinte.

Existe outras formas de gravar no banco, eu conheço essa.
comando de gravar

// Gravar no BANCO de Dados
with DataSet as TclientDataSet do
ApplyUpdates(0);

//fechar o Cds e abrir
CdsPesquisa.Active:=False;
CdsPesquisa.Active:=True;

No meu caso eu gravo no banco de dados pelo Cds no evento
AfterPost e AfterDelete

Então nesse mesmo evento abaixo do codigo de gravação faça o seguinte
feche e abra o cds de pesquisa.
pronto.

ok galera
Qualquer coisa estamos por ai..
flw.
Anderson Lopes

Anderson Lopes

Responder

Posts

20/06/2012

Marco Salles

O Anderson , obrigado por partilhar , e tb seje bem vindo ao nossa comunidade . Porém tem meios bem mais simples de fazer
isto . Utilizando os componentes citados por vc . O ClientDataSet cria Indices em memória sendo desnecessário Sql (ordeyBy)para ordenar

Alem disso ao dar um applyUpdates nos eventos que vc se refere é uma prática que pode ser contestada

Vc perde algo que o ClientdataSet permite é de Aplicar todas as Modificaçoes(Inserções/Deletar) em um bloco só
e não um Por vez . Esta prática depende da Arquitura e do Planejamento e não deve ser regra

Além disso vc utiliza RTTI desnecessariamente ao fazer

// Gravar no BANCO de Dados
with DataSet as TclientDataSet do
ApplyUpdates(0);

Se o Objeto é clientdataset pq utilizar o operador As ??? Este Typecast nesta situações e desnecessaria
Se Voce tem certeza do tipo de objeto é recomendado fazer

TClientDataSet(DataSet).ApplyUpdates(0); // mais simples , eficiente e mais rápido

[]sds
Responder

Gostei + 0

20/06/2012

Anderson Lopes

o anderson , obrigado por partilhar , e tb seje bem vindo ao nossa comunidade . porém tem meios bem mais simples de fazer
isto . utilizando os componentes citados por vc . o clientdataset cria indices em memória sendo desnecessário sql (ordeyby)para ordenar

alem disso ao dar um applyupdates nos eventos que vc se refere é uma prática que pode ser contestada

vc perde algo que o clientdataset permite é de aplicar todas as modificaçoes(inserções/deletar) em um bloco só
e não um por vez . esta prática depende da arquitura e do planejamento e não deve ser regra

além disso vc utiliza rtti desnecessariamente ao fazer

// gravar no banco de dados
with dataset as tclientdataset do
applyupdates(0);

se o objeto é clientdataset pq utilizar o operador as ??? este typecast nesta situações e desnecessaria
se voce tem certeza do tipo de objeto é recomendado fazer

tclientdataset(dataset).applyupdates(0); // mais simples , eficiente e mais rápido

[]sds


Muito Obrigado pelas Dicas Marco Antonio.
Responder

Gostei + 0

20/06/2012

Marco Salles

Então Anderson , vale a pena aprofundar nestas dicas

se vc tiver dúvida o que é normal de uma pesquisada e qualquer coisa volte a postar

Responder

Gostei + 0

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

Aceitar