Capítulo 5: Por trás dos dados do conjunto de dados...
O status da primeira seção de dados
Ao desenvolver aplicativos de banco de dados com Delphi e ADO, a maior parte do trabalho é gasta estudando a documentação de ajuda do componente DataSet. . Para criar um programa baseado em ADO, o Delphi fornece vários componentes de conjunto de dados: TAdoTable, TAdoQuery e outros componentes. Eles são usados para obter, apresentar e modificar dados de tabelas ou consultas de banco de dados.
No Capítulo 5 deste tutorial, daremos uma visão prática de como apresentar, navegar e ler dados, apresentando algumas das propriedades, eventos e métodos da maioria dos componentes de interesse do conjunto de dados.
Escolha, configure, conecte e obtenha
Agora que chegou ao Capítulo 5, você deve estar familiarizado com as etapas necessárias para criar um formulário de banco de dados. No Capítulo 4 criamos manualmente um formulário simples de navegação de dados. Este capítulo irá usá-lo para continuar a discussão.
Até agora, usamos apenas um componente do conjunto de dados (ADO): TAdoTable. É importante entender que TADOQuery e TADODataSet (como componentes do conjunto de dados) usam as mesmas configurações para os mesmos métodos e eventos.
Abra o gergelim; feche o gergelim (abra o gergelim; feche o gergelim)
Uma das características muito importantes do desenvolvimento de banco de dados Delphi é que o Delphi nos permite processar dados durante o design do programa. Você deve se lembrar – no capítulo anterior, usamos a propriedade Active para abrir uma conexão ativa com os dados em tempo de design.
Não é difícil entender que antes de começar a processar os dados da tabela, o programa deve primeiro abrir o conjunto de dados. O Delphi tem duas maneiras de obter essa funcionalidade. A primeira é que, como vimos, a propriedade Active pode ser definida como True no design ou em tempo de execução; a segunda é que podemos chamar o método Open em tempo de execução; Por exemplo, adicione o código a seguir ao manipulador de eventos OnCreate do formulário para obter os dados do componente ADOTable.
ADOTable1.Open;
Nota: Cada conjunto de dados ADO pode acessar dados do banco de dados por meio de sua própria propriedade ConnectionString ou de um componente ADOConnection (e seu ConnectionString). Se o componente ADOTable1 estiver conectado ao componente ADOConnection1 (este método é recomendado), a abertura do ADOTable ativará o componente ADOConnection correspondente. ADOConnection fornece dois eventos que serão executados: OnWillConnect e OnConnectComplete.
O método Open define a propriedade Active como True e ativa a conexão. Quando terminarmos a conexão, podemos definir a propriedade Active como False ou chamar o método Close para desconectar. Normalmente colocamos a chamada ao método Close no manipulador de eventos OnClose do formulário:
ADOTable1.Close;
Antes de prosseguir, é crucial saber que trabalhar com métodos e propriedades de conjuntos de dados depende do conhecimento do estado atual dos dados. Simplificando, a propriedade State de um conjunto de dados determina quais ações podem ou não ocorrer no conjunto de dados a qualquer momento.
Como vai?
Se o conjunto de dados estiver fechado, o Estado dos dados mostrará uma conexão Inativa. Quando a conexão é fechada, nenhuma operação, comportamento ou método pode ser executado nos dados. Quando abrimos pela primeira vez uma conexão com o conjunto de dados, o conjunto de dados está no estado Navegar padrão. Você deve sempre saber o estado dos “seus” dados. Por exemplo, quando conectamos um conjunto de dados a um DBGrid, o usuário pode ver o conjunto de dados (ou conjunto de registros) subjacente, mas se quiser alterar alguns dados, deverá definir o Estado como Editar.
Quando um programa processa dados, é importante compreender que o estado do conjunto de dados muda constantemente. Por exemplo, ao navegar pelos dados no DBGrid (estado Navegar), o usuário inicia a edição dos registros, e o estado mudará automaticamente para Editar. Obviamente, esse é o comportamento padrão quando a propriedade AutoEdit dos controles de visualização de dados (DBGrid, DBEdit) está definida como True.
Mas como obtemos o status? ADOTable (nem qualquer outro componente DataSet) não possui gatilhos para lidar com mudanças de estado.
Bem, vamos dar uma olhada: para cada componente DataSet, normalmente usamos um componente DataSource para renderizar uma conexão com um ou mais controles de visualização de dados. É isso.
Cada componente da fonte de dados possui um evento OnStateChange, que é acionado sempre que o estado do conjunto de dados subjacente muda. Coloque o seguinte código no manipulador de eventos OnStateChange para exibir o estado atual do componente do conjunto de dados ADOTable1 usando o título do formulário:
PRocedure TForm1.DataSource1StateChange(Remetente: TObject);
var ds: string ;
começar
caso ADOTable1.Estado de
dsInativo: ds:='Fechado';
dsBrowse: ds:='Navegando';
dsEdit: ds:='Editando';
dsInsert: ds:='Inserção de novo registro';
outro
ds:='Outros estados'
fim ;
Legenda:='Estado ADOTable1: ' + ds;
fim ;