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 so os campos e as linhas so os registros. Todo o acesso a bancos de dados no
Delphi feito atravs de DataSets. Os componentes Table e Query so os tipos principais de
DataSets. Neste captulo, veremos as propriedades, eventos e mtodos 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 operaes:


Altere a propriedade Active do DataSet para True.

Isso pode ser feito em tempo de desenvolvimento no Object Inspector, ou em tempo de


execuo. O seguinte comando abre o componente chamado "Table1":
Table1.Active := True;

Use o mtodo Open no DataSet, como abaixo:


Query1.Open;

Quando um DataSet aberto os dados conectados a ele so lidos e exibidos automaticamente


(se houver componentes onde os dados possam ser exibidos, claro). No exemplo do captulo
anterior, abrimos um componente Table em um formulrio 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 operaes:


Altere a propriedade Active do DataSet para False.
Use o mtodo Close no DataSet, como em Table1.Close

Estados de um DataSet
Um DataSet pode estar em vrios 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 descrio breve dos estados mais
importantes em que pode estar um DataSet.
Estado
(valor de State)

Significado

dsInactive

O Dataset est fechado. Seus dados no esto disponveis (no


podem ser lidos nem alterados).

dsBrowse

O Dataset est aberto. Seus dados podem ser visualizados, mas no


podem ser alterados. Este o estado padro 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 padro. Quando um DataSet aberto, ele colocado


automaticamente neste estado. Vrios mtodos de um DataSet podem ser usados para alterar
o seu estado. Na ilustrao a seguir, so mostrados os quatro estados mais importantes e os
mtodos que podem ser usados para passar de um estado para outro.

Estados de um DataSet
Para usar um dos mtodos da ilustrao, simplesmente use o nome do DataSet seguido pelo
nome do mtodo. O trecho de cdigo 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 no fosse possvel percorrer e consultar (navegar) os
seus registros. H vrios mtodos e propriedades teis para a navegao de DataSets.
Para permitir a navegao de seus registros, todo DataSet contm um cursor que indica
o registro atual (ou linha atual) do DataSet. no registro atual que so feitas alteraes, ou
onde so inseridos (ou removidos) registros. Todos os mtodos de navegao alteram
a posio do cursor. Veja uma descrio breve desses mtodos na tabela a seguir:
Mtodo

Descrio

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 prximo 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 nmero de registros especificado em num. Um valor


positivo move o cursor para frente; um valor negativo move-o para trs.
Por exemplo, Table1.moveBy(-10) move o cursor 10 registros para trs na
tabelaTable1.
Se o nmero de registros especificado for maior do que o nmero que se
pode mover, o cursor movido para o primeiro ou o ltimo registro,

dependendo da direo do movimento.


Alm dos mtodos descritos acima, h duas propriedades que indicam se o cursor chegou ao
final ou ao incio de um DataSet: BOF e EOF.
Propriedade
BOF

Descrio
BOF alterado para True quando o cursor est no primeiro registro do
DataSet. BOF a abreviao de Begin of File "Incio do Arquivo".
Quando o cursor estiver em qualquer registro que no 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 abreviao de End of File "Final do Arquivo".
Quando o cursor estiver em qualquer registro que no 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 mtodos permitem fazer essas alteraes:
Mtodo

Descrio

Edit

Coloca o DataSet no estado dsEdit. Isto permite a alterao dos valores do


registro atual. Muitos componentes chamam esse mtodo implicitamente para
permitir a alterao direta dos valores de um DataSet. O componente DBGrid,
por exemplo, entra no estado dsEdit usando o mtodo 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 posio atual do cursor. O estado do DataSet


muda para dsInsert (como para o mtodo 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 contrrio, o
estado do DataSet no alterado. O comando Post um tipo de confirmao 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 operao (uma alterao em um registro, por exemplo) e


coloca o DataSet no estado dsBrowse.

Delete

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

Você também pode gostar