Fórum Ordenar registro em um dbGrid sem mexer no sql #171212

24/07/2003

0

Por gentileza alguém sabe como faço p/ alterar as posições dos registros de um dbgrid sem mexer com sql

explicando melhor
O problema que estou tendo é o seguinte:
Tem um grid no form e dois botões ao seu lado, quando o usuário clicar em um dos botões o registro selecionado irá mudar de posição no grid(para cima ou para baixo)

Obs: os registros do grid são carregados no show do form

Obrigado pela atenção e até mais


Fpaschoalini

Fpaschoalini

Responder

Posts

24/07/2003

Claudioabs2000

o DbGrid como o nome diz é sempre vinculado ao dataset. Tu pode gerar campos virtuais mas não seria ´Elegante´. Tu pode fazer um campo no banco de dados que seria o ordenador e a cada modificação tu dá um rerfresh. Mas o certo seria um stringgrid!!!!


Responder

Gostei + 0

27/07/2003

Carlosrm

fpaschoalini,

Você quer ordenar ou quer navegar ?
Para navegar, indo para o registro anterior (linha de cima do dbgrid) ou para o registro posterior (linha de baixo do dbgrid), se o dbgrid estiver com o foco, bastará pressionar a tecla de seta-para-cima (linha de cima do dbgrid), ou a seta-para baixo (linha de baixo do dbgrid).

Se quiser usar botões específicos para isso, por exemplo , bitAnterior e bitPosterior, use os métodos Prior e Next do dataset vinculado ao dbgrid.
Por exemplo, no evento OnClick do bitAnterior escreve:
TabelaVinculadaAoDbgrid.Prior;

Há também o método MoveBy(), que permite que o ponteiro do registro corrente seja deslocada para a frente ou para trás, o número de linhas especificado (passado como parâmetro) para MoveBy.
Por exemplo,
TabelaVinculadaAoDbgrid.MoveBy(5); // avança 5 registros (Next 5 vezes)
TabelaVinculadaAoDbgrid.MoveBy(-5); // volta 5 registros (Prior 5 vezes).
Se não ajudou, espero não ter atrapalhado. carlosrm.


Responder

Gostei + 0

28/07/2003

Regisjj

Blza?

Olha o que vc esta tentando fazer é possível.
Saber usar um TClientDataSet da arquitetura Midas?
Não úm bicho de sete cabeças.

Vou montar um exemplo e te mando, me mande o seu e-mail para: reginaldo.jesus@mbr.com.br, será mais fácil, mas a lógica é a seguinte:
O ClientDataSet te permite criar indices de campos dentro dele pelo o qual ele ordena os registros independente de como eles venham da Query, e o mesmo tembém te permite criar campos que não fazerm parte da Query. Então ligaremos a o ClientDataSet a uma Query, criaremos um campo ´Virtual´ ao qual, após o ClientDataSet ter sido aberto, preencheremos de 0 até o número de registros que ele conter.
Criaremos um indice que ordenara por este campo virtual e toda vez que trocarmos os números entre dois registros eles trocarão as suas posições no DBGrid.

Falow.


Responder

Gostei + 0

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

Aceitar