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.

  a.. Para abrir um DataSet, realize uma das seguintes operações: 
  b.. 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;

  a.. 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.

   

  a.. Para fechar um DataSet, realize uma das seguintes operações: 
  b.. Altere a propriedade Active do DataSet para False. 
  c.. 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 componente Table.

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 tabela Table1.

      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.
     

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 
para dsInsert.
     
      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.
     


fonte:http://www.angelfire.com/mt/argo/datasets.htm

Ricardo Mendes
Dpto Informatica.

[As partes desta mensagem que não continham texto foram removidas]

Responder a