Fórum Problema com ordenação ClientDataSet [arquivo binário .cds] #351848
14/01/2008
0
Boa noite,
Estou usando ClientDataSet e salvando em arquivos cds. Tenho que fazer uma ordenação onde um campo esteja em ordem ascendente e ao mesmo tempo outro campo esteja em ordem descendente.
Problemas, tentei utilizar o IndexFieldName para os dois campos, mas só traz consultas em ordem ascendente. Tentei utilizar o IndexName após criar os indices com a opçao ixDescending no campo que preciso da ordem descendente, mas só consigo setar um IndexName de cada vez, como faço pra acumular as consultas?
Sem alguém puder ajudar agradeço.
Estou usando ClientDataSet e salvando em arquivos cds. Tenho que fazer uma ordenação onde um campo esteja em ordem ascendente e ao mesmo tempo outro campo esteja em ordem descendente.
Problemas, tentei utilizar o IndexFieldName para os dois campos, mas só traz consultas em ordem ascendente. Tentei utilizar o IndexName após criar os indices com a opçao ixDescending no campo que preciso da ordem descendente, mas só consigo setar um IndexName de cada vez, como faço pra acumular as consultas?
Sem alguém puder ajudar agradeço.
Hell_gentleman
Curtir tópico
+ 0
Responder
Posts
24/01/2008
Carlosrm
HeLL_geNtLeMaN,
As tabelas (dos Bancos de Dados Relacionais, pelo menos) só podem ter um índice ativo de cada vez. Pode-se ter muitos índices, com um ou mais campos em cada índice, mas só se pode aplicar na tabela um índice de cada vez.
Podemos ter um dbgrid associado a uma tabela Clientes, e conforme clicamos no título de uma coluna, o dbgrid indexa as linhas (tuplas, registros) da tabela, conforme a coluna clicada (Código, Nome, Cpf, Cidade...).
Embora se possa indexar em diversas colunas (se você escreveu código para isso), só é possível usar um (1) índice de cada vez. E ao aplicar um índice, se existir um outro índice ativo anterior, este é cancelado para permitir a ativação do mais recente.
Essa restrição na realidade serve para garantir a integridade dos dados existentes na tabela... imagine se alguém acessasse os dados da Receita Federal e invertesse a ordem dos nºs dos CPF´s dos contribuintes, sem inverter também os demais campos... (nome, endereço, etc).
O que você pensou até é possível fazer, mas sem nenhum integridade de dados. Sendo assim, na prática é doidera...
carlosrm :wink:
As tabelas (dos Bancos de Dados Relacionais, pelo menos) só podem ter um índice ativo de cada vez. Pode-se ter muitos índices, com um ou mais campos em cada índice, mas só se pode aplicar na tabela um índice de cada vez.
Podemos ter um dbgrid associado a uma tabela Clientes, e conforme clicamos no título de uma coluna, o dbgrid indexa as linhas (tuplas, registros) da tabela, conforme a coluna clicada (Código, Nome, Cpf, Cidade...).
Embora se possa indexar em diversas colunas (se você escreveu código para isso), só é possível usar um (1) índice de cada vez. E ao aplicar um índice, se existir um outro índice ativo anterior, este é cancelado para permitir a ativação do mais recente.
Essa restrição na realidade serve para garantir a integridade dos dados existentes na tabela... imagine se alguém acessasse os dados da Receita Federal e invertesse a ordem dos nºs dos CPF´s dos contribuintes, sem inverter também os demais campos... (nome, endereço, etc).
O que você pensou até é possível fazer, mas sem nenhum integridade de dados. Sendo assim, na prática é doidera...
carlosrm :wink:
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)