Mas
o que é Índice? Imagine um livro sem um índice, demoraríamos muito tempo para
encontrar o assunto que desejamos. O índice serve para mostrar, indicar ou
revelar algo, é uma lista de elementos dentro de uma determinada ordem. No
Delphi nós podemos criar Índices em ordem Crescente e Decrescente, nos
possibilitando encontrar mais facilmente os registros em nossos componentes de
visualização de dados como o DbGrid.
Existe dois tipos de índices, o temporário e o
persistente. O índice temporário é feito em memória assim como o persistente, a
diferença que o temporário eu não posso reutilizá-lo já o persistente eu posso
reutilizá-lo, ele nos permite ordenar em ordem crescente e decrescente.
Nesse
artigo iremos conhecer como trabalhar com índice utilizando as propriedades
IndexDefs e IndexFieldNames do ClientDataSet.
Crie um Banco de dados e uma tabela com os seguintes campos e preencha:
Nome |
Tipo |
Chave |
ID |
Integer |
Chave Primária |
Nome |
Varchar(30) |
|
Cidade |
Varchar(25) |
|
UF |
Char(02) |
|
Telefone |
Varchar(12) |
|
Salario |
Numeric(10,2) |
|
A tabela será composta pelos seguintes registros:
ID Nome Cidade UF
Telefone Salario
1 |
Rubens
Antunes |
Juiz de
Fora |
MG |
32
32137360 |
1200,00 |
2 |
Amanda
da Silva |
Rio de
Janeiro |
RJ |
21
53216540 |
850,40 |
3 |
Samuel
Gomes |
Rio de
Janeiro |
RJ |
21
30254780 |
934,50 |
4 |
Maria
de Oliveira |
Juiz de
Fora |
MG |
32
32112891 |
1345,20 |
5 |
Gilmar
Habel |
São
Paulo |
SP |
11
67892341 |
450,00 |
6 |
Cristiano
Alves |
São
Paulo |
SP |
11
76530912 |
850,40 |
7 |
Bruno
Sempre |
São
Paulo |
SP |
11
35680951 |
934,50 |
8 |
Fernanda
Brum |
Rio de
Janeiro |
RJ |
21
36489399 |
450,00 |
9 |
Walter
Pereira |
Belo
Horizonte |
MG |
31
34256579 |
620,10 |
10 |
Ana
Maria Braga |
Belo
Horizonte |
MG |
31
34577822 |
620,10 |
11 |
Maria
Bonita |
Brasilia |
DF |
61
46484894 |
450,00 |
12 |
Fernando
Henrique |
Brasilia |
DF |
61
37383883 |
934,50 |
13 |
Jaqueline
Fernandes |
Brasilia |
DF |
61
83578353 |
1840,00 |
14 |
Mateus
Bortolozo |
Juiz de
Fora |
MG |
32
38974844 |
1525,00 |
15 |
Camila
Cabete |
Rio de
Janeiro |
RJ |
21
38444994 |
430,00 |
16 |
Fabiana
Queiroz |
Belem |
PA |
91
48747488 |
650,30 |
17 |
Andressa
Sanchez |
Rio de
Janeiro |
RJ |
21
44748498 |
765,23 |
18 |
Rodrigo
Rocha |
Rio de
Janeiro |
RJ |
21
48458484 |
1200,00 |
19 |
Fabricia
Queiroz |
Juiz de
Fora |
MG |
32
35477444 |
1345,20 |
20 |
Rubens
Oliveira |
Belo
Horizonte |
MG |
32
36373783 |
44,23 |
Nota
Crie um projeto no Delphi e deixe-o
como a figura abaixo, neste formulário você deverá ligá-lo ao nosso banco de
dados e fazer uso da nossa tabela, deverá ter também um SqlDataSet que será
ligado ao SqlConnection um Provider que será ligado ao SqlDataSet e um
ClientDataSet que será ligado ao Provider esse ClientDataSet receberá o nome de
cdsPessoa.
Propriedade
IndexFieldNames
O Delphi trabalha como padrão, o índice Ascendente(Crescente), para criarmos um índice basta selecionar o nosso cdsPessoa e ir na propriedade IndexFieldNames e colocar o nome do campo o qual desejamos ordenar, coloque o campo nome, e execute a aplicação e perceba que ele nos traz os registros ordenados por nome.
Figura 01
Dica: Se quisermos
também ordenar por mais de um campo, basta separar por ponto e virgula (;) os
nomes dos campos na propriedade indexfieldNames.
Propriedade IndexDefs
Podemos também criar uma lista de índice e utilizá-la como quisermos, para isso temos que utilizar a propriedade IndexDefs, Essa propriedade nos possibilita também ordenar em ordem decrescente.
Selecione o nosso ClientDataSet cdsPessoa e clique na reticência em frente a propriedade IndexDefs do ClientDataSet e abrirá uma caixinha, clique no botão Add New e ele adicionará um novo índice. Na propriedade Fields coloque Nome e dê um clique na propriedade Options e passe para true a propriedade ixDescending e mude a propriedade name para indicenome, feche a caixinha. Na propriedade IndexName escolha o nome do índice que foi criado. Execute a aplicação e perceba na figura 02 que ele está ordenando em ordem Decrescente o campo Nome, só porque mudamos a propriedade IxDescending para true.
Segue na tabela a seguir as descrições de cada propriedade do IndexDefs:
IndexDefs
Propriedade |
Descrição |
Name |
Nesta propriedade se dar o nome do
índice |
Fields |
Nesta propriedade podemos definir
quais os campos serão composto o nosso índice, sabendo que podemos separar um
campo do outro utilizando ponto e vírgula (;). |
DescFields |
Uma lista de campos contida na
propriedade fields a qual queremos
ordenar em ordem Decrescente, um exemplo interessante é colocarmos o campo
Cidade, você irá perceber que só o campo cidade será ordenado em ordem
decrescente. |
CaseInsFields |
Uma lista de campos contidos na propriedade
Fields que deveria ser indexada de uma maneira não sensível a casos. |
GroupingLevel |
Propriedade usada para agregação. |
Propriedade Options
Propriedade |
Descrição |
IxPrimary |
Define o índice como sendo o
principal de uma lista de índices. |
IxUnique |
Define que ele é um índice único
de uma lista de índices. |
IxDescending |
Define que o índice será ordenado
em ordem decrescente. |
IxCaseinsensitive |
Define que o índice não será
sensível a casos. |
Fico por aqui, no próximo falarei sobre outras propriedades, até lá
Rubens Antunes
Autor do Livro: Delphi – Faça Uma Aplicação Comercial