Ordenar registro em um dbGrid sem mexer no sql
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
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
Curtidas 0
Respostas
Claudioabs2000
24/07/2003
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!!!!
GOSTEI 0
Carlosrm
24/07/2003
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.
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.
GOSTEI 0
Regisjj
24/07/2003
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.
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.
GOSTEI 0