Incluindo , Excluindo e Localizando dados em uma base de dados Access via ADO
O Problema
No capítulo anterior vimos como se conectar e navegar através de um base de dados Access. Você deve ter percebido que embora seja muito simples fazer isto na prática as sua aplicações vão precisar ter mais recursos.
Vejamos a seguir como incluir , excluir e localizar registros de sua base de dados usando para isto a ADO Data Control.
Preparando os dados:
Para que tudo funcione bem nesta etapa vamos ter que alterar a estrutura da tabela Clientes. Vamos incluir um novo campo chamado Codigo que irá servir para atribuir um código único a cada cliente. Vamos usar esta propriedade para poder localizar cada cliente. Abaixo temos comparadas a estrutura anterior e a nova:
Perceba que o novo campo possui uma chave Primária e é do tipo Autonumeração , ou seja , a medida que você inclui dados este campo sofre um incremento a cada registro inserido.
Para especificar o campo chave Primária de uma tabela usamos a propriedade Primary . Um campo de chave primária contém dados que identificam exclusivamente cada registro em uma tabela.
O que é uma chave primária ? Um ou mais campos (colunas) cujo valor ou valores identificam de modo exclusivo cada registro de uma tabela. Uma chave primária não permite valores Nulos e deve sempre ter um índice exclusivo. Uma chave primária é usada para relacionar uma tabela a chaves estrangeiras em outras tabelas. |
No Visual Basic, para acessar a propriedade Primary de um índice, usamos a propriedade PrimaryKey do ADO (ActiveX Data Objects, objetos de dados ActiveX).
O que é tipo de dados AutoNumeração
? Um tipo de dados de campo que armazena automaticamente um número exclusivo para cada registro à medida que este é adicionado à tabela. Três tipos de número podem ser gerados: seqüencial (incremento de 1), aleatório e Código de Replicação (utilizado pelo Gerenciador de Replicação para garantir a integridade dos dados em bancos de dados replicados). Os números gerados por um campo AutoNumeração não podem ser excluídos ou modificados. |
Vamos também criar um índice composto para nosso tabela clientes que será composto pelos campos: Nome e Sobrenome. Abaixo temos os índices existentes na nossa tabela:
O que é um índice ? Um recurso que acelera a pesquisa e a classificação em uma tabela baseada em valores de chave e pode impor exclusividade nas linhas de uma tabela. A chave primária de uma tabela é automaticamente indexada. Alguns campos não podem ser indexados por causa de seus tipos de dados. Ex: campo do tipo Memorando. |
Incluindo registros : A Técnica
A inclusão de um novo registro em sua base de dados via ADO requer duas etapas:
Para excluir um registro usamos o método Delete do objeto Recordset da ADO. Após a exclusão do registro devemos mover o ADO data control para um registro válido: você pode usar MoveNext ou Moveprevious para isto.
A Prática
Nosso ponto de partida será a aplicação do capítulo anterior . Carregue o projeto adodc1.vbp e inclua um nova caixa de texto e um botão de comando com as seguintes propriedades(Fig 1.0):
|
||||||||||||||||||||||||||||
Fig 1.0 Novos controles adicionados ao projeto adodc1.vbp | e janela das propriedades do CommandButton |
Vamos agora incluir um Menu de comandos ao projeto. Para isto , com o projeto carregado, pressione Ctrl+E , ou selecione as opção Menu Editor ... Ctrl+E do menu Tools. A janela da figura 2.0 irá surgir na tela. Crie um menu conforme a tabela 1.0 : ( Leia o artigo - Criando Menus com o Visual Basic)
|
|||||||||||||||||||||||||||||||||||||||||||
Fig 2.0 | Tabela 1.0 |
O formulário FrmMain deverá fica com a seguinte aparência:
Voce deve alterar a propriedade TabIndex da caixa de
texto (TextBox) text8 para zero, de text1 para 1 e assim
sucessivamente até text7. Isto é necessário para que o foco esteja na caixa text8 quando o projeto for carregado ( O padrão é o foco estar no controle com TabIndex=0 ) |
O Código
1-) Vamos agora inserir o código necessário para que nosso projeto funcione adequadamente. Clique duas vezes sobre o formulário do projeto e insira a declaração Option Explicit na seção General Declarations do formulário:
2-) O código a seguir, a procedure Save, irá verificar se algum registro novo foi incluído. Em caso positivo tenta salvar o novo registro e desabilita a opção Salvar do Menu de opções.
Private Sub Save() `Se estiver no modo de inclusão então salva If adodc1.Recordset.EditMode = adEditAdd Then On Error GoTo SaveFailure: adodc1.Recordset.Update 'salva o registro On Error GoTo 0 'desabilita o tratamento de erros `Como não precisa salvar , então desabilita a opção Salvar do Menu mnuSave.Enabled = False End If 'Inicio Tratamento de erros (SaveDone e SaveFailure são chamadas Labels) SaveDone: Exit Sub SaveFailure: MsgBox Err.Number & vbCrLf & Err.Description 'Exibe a descrição do erro Resume SaveDone 'continua a execução a partir da linha SaveDone End Sub |
3-) A seguir o código para incluir um novo registro quando o usuário clicar na opção Incluir do Menu.
Private Sub mnuNew_Click() 'Inclui uma nova linha em branco na memória adodc1.Recordset.AddNew `habilita a opção Salvar do Menu mnuSave.Enabled = True End Sub |
4-) O código da opção Salvar do menu, apenas chama a procedure Save.
Private Sub mnuSave_Click() Save End Sub |
5-) O código associado ao botão CmdSair, verifica se o usuário tenta sair após incluir um registro sem salvar, e, pergunta se ele quer salvar o registro informado.
Private Sub cmdSair_Click() Se estiver no modo de inclusão , então pergunta se quer salvar If adodc1.Recordset.EditMode = adEditAdd Then If MsgBox("Deseja Salvar os dados ?", vbYesNo) = vbYes Then Save End If End If Unload Me End Sub |
6-) Para encerrar vejamos o código da opção Excluir do menu.
Private Sub mnuDelete_Click() 'ativa o tratamento de erros On Error GoTo DeleteFailure: 'exclui o registro adodc1.Recordset.Delete `O registro atual agora é invalido então movemos para o anterior adodc1.Recordset.MovePrevious `Se estivermos no inicio do arquivo movemos para o primeiro registro If adodc1.Recordset.BOF Then adodc1.Recordset.MoveFirst End If 'Inicio do tratamento de erros DeleteDone: Exit Sub DeleteFailure: MsgBox Err.Number & vbCrLf & Err.Description Resume DeleteDone End Sub |
7-) Não esqueça de salvar o seu projeto - adodc1.vbp ; após isto pressione F5 e veja o resultado
Localizando os Dados com ADO Data control
Aguarde conclusao...
José Carlos Macoratti |