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

             Essa propriedade é responsável para armazena uma lista de índices, podendo ser definido quais serão os índices primários, secundários e até índices únicos.

 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