Você está na página 1de 3

Trabalhando com DataSets

Um DataSet é um conjunto de dados organizado em forma de tabela (em linhas e colunas). As colunas são os campos e as linhas são os registros. Todo o acesso a bancos de dados no Delphi é feito através de DataSets. Os componentes Table e Query são os tipos principais de DataSets. Neste capítulo, veremos as propriedades, eventos e métodos dos DataSets. Tudo que veremos aqui vale para os componentes Table e Query.

Abrindo e fechando DataSets

Para alterar ou ler os dados em uma DataSet, você deve primeiro abrir o DataSet.

Para abrir um DataSet, realize uma das seguintes operações:

Altere a propriedade Active do DataSet para True.

Isso pode ser feito em tempo de desenvolvimento no Object Inspector, ou em tempo de execução. O seguinte comando abre o componente chamado "Table1":

Table1.Active := True;

Use o método Open no DataSet, como abaixo:

Query1.Open;

Quando um DataSet é aberto os dados conectados a ele são lidos e exibidos automaticamente (se houver componentes onde os dados possam ser exibidos, é claro). No exemplo do capítulo anterior, abrimos um componente Table em um formulário para que os dados fossem exibidos imediatamente em um componente DBGrid.

Você deve sempre fechar um DataSet depois de usá-lo, para liberar recursos do sistema.

Para fechar um DataSet, realize uma das seguintes operações:

Altere a propriedade Active do DataSet para False.

Use o método Close no DataSet, como em Table1.Close

Estados de um DataSet

Um DataSet pode estar em vários estados diferentes. O estado de um DataSet determina o que pode ser feito (ou está sendo feito) com o DataSet. O valor da propriedade State de um DataSet determina o seu estado atual. Veja a seguir uma descrição breve dos estados mais importantes em que pode estar um DataSet.

Estado (valor de State)

 

Significado

dsInactive

O

Dataset está fechado. Seus dados não estão disponíveis (não

podem ser lidos nem alterados).

dsBrowse

O

Dataset está aberto. Seus dados podem ser visualizados, mas não

podem ser alterados. Este é o estado padrão de um DataSet.

dsEdit

O

DataSet está aberto. O registro atual pode ser modificado.

dsInsert

O

DataSet está aberto. Um novo registro acaba de ser inserido.

O estado dsBrowse é o estado padrão. Quando um DataSet é aberto, ele é colocado automaticamente neste estado. Vários métodos de um DataSet podem ser usados para alterar

o seu estado. Na ilustração a seguir, são mostrados os quatro estados mais importantes e os métodos que podem ser usados para passar de um estado para outro.

Estados de um DataSet

Para usar um dos métodos da ilustração, simplesmente use o nome do DataSet seguido pelo nome do método. O trecho de código abaixo, por exemplo, altera cinco vezes o estado de um componenteTable.

procedure TForm1.Button1Click(Sender: TObject);

begin

Table1.Open; // O estado muda para dsBrowse

Table1.Edit; //

muda para dsEdit

Table1.Insert; //

muda novamente para dsInsert

Table1.Close; //

e finalmente muda para dsInactive

end;

Navegando em um DataSet

Os DataSets teriam pouca utilidade se não fosse possível percorrer e consultar (navegar) os seus registros. Há vários métodos e propriedades úteis para a navegação de DataSets.

Para permitir a navegação de seus registros, todo DataSet contém um cursor que indica

o registro atual (ou linha atual) do DataSet. É no registro atual que são feitas alterações, ou onde são inseridos (ou removidos) registros. Todos os métodos de navegação alteram

a posição do cursor. Veja uma descrição breve desses métodos na tabela a seguir:

Método

Descrição

First

Move o cursor para o primeiro registro do DataSet.

Last

Move o cursor para o último registro do DataSet.

Next

Move o cursor para o próximo registro do DataSet (imediatamente depois do registro atual). Se o cursor já estiver no último registro, nada acontece.

Prior

Move o cursor para o registro anterior do DataSet (imediatamente antes do registro atual). Se o cursor já estiver no primeiro registro, nada acontece.

MoveBy(num)

Move o cursor o número de registros especificado em num. Um valor positivo move o cursor para frente; um valor negativo move-o para trás. Por exemplo, Table1.moveBy(-10) move o cursor 10 registros para trás na

tabelaTable1.

Se o número de registros especificado for maior do que o número que se pode mover, o cursor é movido para o primeiro ou o último registro,

dependendo da direção do movimento.

dependendo da direção do movimento.

Além dos métodos descritos acima, há duas propriedades que indicam se o cursor chegou ao final ou ao início de um DataSet: BOF e EOF.

Propriedade

Descrição

BOF

BOF é alterado para True quando o cursor está no primeiro registro do DataSet. BOF é a abreviação de Begin of File "Início do Arquivo".

Quando o cursor estiver em qualquer registro que não seja o primeiro do DataSet, o valor de BOF é False.

EOF

EOF é alterado para True quando o cursor está no último registro do DataSet. EOF é a abreviação de End of File "Final do Arquivo".

Quando o cursor estiver em qualquer registro que não seja o último do DataSet, o valor de EOF é False.

Modificando Datasets

Pode-se alterar um DataSet diretamente, modificando valores campo a campo, ou adicionando e removendo registros inteiros. Os seguintes métodos permitem fazer essas alterações:

Método

Descrição

Edit

Coloca o DataSet no estado dsEdit. Isto permite a alteração dos valores do registro atual. Muitos componentes chamam esse método implicitamente para permitir a alteração direta dos valores de um DataSet. O componente DBGrid, por exemplo, entra no estado dsEdit usando o método Edit, quando se dá um duplo clique em um dos registros.

Append

Adiciona um registro vazio ao final do DataSet. O estado do DataSet muda paradsInsert.

Insert

Adiciona um registro vazio na posição atual do cursor. O estado do DataSet muda para dsInsert (como para o método Append).

Post

Tenta enviar o novo registro ou o registro alterado para o banco de dados. Se tudo correr bem, o DataSet é colocado no estado dsBrowse. Caso contrário, o estado do DataSet não é alterado. O comando Post é um tipo de confirmação da última entrada.

Muitos componentes chamam Post automaticamente (quando se passa de um registro para outro em um DBGrid, por exemplo).

Cancel

Cancela a última operação (uma alteração em um registro, por exemplo) e coloca o DataSet no estado dsBrowse.

Delete

Apaga o registro atual e coloca o DataSet no estado dsBrowse.