SOBRE O AUTOR

NAVEGAÇÃO

FINANÇAS

SETOR ELÉTRICO

INFORMÁTICA

MISCELÂNEA

Clique aqui para ver meus bookmarks
 
INFORMÁTICA
Visual Basic
Introdução
Iniciando
Controles
Menus
Arquivos
Programação
Gráficos
Erros
Bancos de Dados
Dicas & Truques
Funções, Comandos
Eventos do VB
Downloads
InfoLinks
Delphi
 
SOBRE O AUTOR
Curriculum Vitae
Estante de Livros
Publicações
Painel ICQ
 
NAVEGAÇÃO
Página Inicial
Mapa do Site
Novidades
Busca no Site
Comentários
Livro de Visitas
 
FINANÇAS
As 500 mais - BR
Análise de Projetos
Contabilidade
Cotações Brasil
Cotações EUA
Estratégia
Gráficos Online
Glossário Financeiro
StockLinks
 
SETOR ELÉTRICO
EletroLinks
Papers
Privatização
 
MISCELÂNEA
Cinema
Curitiba
Humor
Links Amigos
Star Trek
 

Enviar e-mail Alvaro


WallStreet Dividend Award




©1998/1999
Alvaro A. de Almeida


  CAPÍTULO 8
BANCOS DE DADOS


Capítulo 7 1 2 3 4 5 6 7 8 9 10 11 12 Capítulo 9

O Visual Basic disponibiliza meios de se construir aplicativos de bancos de dados de maneira rápida. De modo geral, bancos de dados são conjuntos de tabelas, índices e relações potencializados por algum driver de banco de dados. O VB possibilita a conexão com os seguintes drivers:
 

  • Microsoft Access;
  • dBase III, IV e 5.0;
  • FoxPro 2.0, 2.5 e 3.0;
  • Paradox 3.x, 4.x e 5.x;
  • ODBC.

 
Os bancos de dados do VB são potencializados pelo Jet Engine, que é o mesmo driver do Access. A figura 21 mostra a estrutura de um banco de dados mdb na versão 2.5 do Jet Engine. Esta é a versão de banco de dados do Visual Basic 4.0 e do Access 2.0. Bancos de dados criados pelo Visual Basic 3.0 usam o Jet Engine 1.1 e somente serão totalmente compatíveis com o Access 1.1.

Alguns termos merecem definição:
 

  • DBEngine: é um objeto que representa o Jet Engine da MicroSoft e contém todos os outros objetos de bancos de dados.
  • Workspace: é um objeto que define uma seção de trabalho do usuário. Quando um banco de dados é iniciado, um Workspace default é criado, com senha "" e nome " Admin".
  • DataBase: é o objeto banco de dados por excelência;
  • TableDef: representa a estrutura de uma tabela, que pode conter vários campos (Fields) e vários índices (Indexes);
  • Field: representa um campo dentro de uma tabela.
  • Index: representa um índice dentro de uma tabela.
  • QueryDef: representa a estrutura de uma consulta (query) em uma tabela.
  • RecordSet: representa uma tabela ou parte dela. O Recorset pode ser do tipo Table (Tabela), Dynaset ou SnapShot (Instantâneo). Dynaset é uma estrutura mais versátil do que uma tabela, podendo ser gerado por uma consulta ou uma declaração SQL. Snapshot é o tipo mais restritivo de tabelas e seus dados não pode ser alterados pelo usuário.

 


O CONTROLE DE DADOS
 

A maneira mais fácil de manipular bancos de dados é por meio do Data Control, ou Controle de Dados. Este controle, disponível desde a versão 2.0, abre um banco de dados, conecta-se a uma tabela especificada e mostra o conteúdo dos campos em "controles ligados".
 

Para usar o Controle de Dados, proceda da seguinte maneira:
  

  1. Desenhe o Controle de Dados no formulário;
  2. Na janela de propriedades, especifique a propriedade DataBaseName. Esta propriedade deve conter um banco de dados já existente, com todo o caminho;
  3. Especifique a propriedade RecordSource, que deve corresponder a uma tabela válida do banco de dados;
  4. Desenhe uma caixa de texto para cada campo da tabela;
  5. Defina a propriedade DataSource de cada caixa de texto como sendo Data1 (ou o nome do Controle de Dados).Da mesma forma, especifique a propriedade DataField de cada caixa de texto como uma campo distinto da tabela.

  Figura 21

     

 
Neste ponto, o nosso gerenciador de banco de dados já é funcional, ou seja, já podemos navegar pelos registros, embora não seja possível fazer muito mais do que isto

 
As caixas de texto são denominados "Controles Ligados" (Bound Controls). Outros controles ligados são os Rótulos, as Caixas de Figuras, Caixas de Imagem, Caixas de Verificação, Painéis e Quadros (Frames). A versão 4.0 oferece, ainda, a DBGrid (Grade ligada), a DBCombo e a DBList.

 
Se você não tem uma banco de dados, a maneira mais fácil de criá-lo é usando o Gerenciador de Dados (Data Manager), que vem junto com o Visual Basic. Este aplicativo pode ser encontrado no menu Add-Ins (suplementos) e é bastante auto-explicativo. Comece escolhendo a opção File | New e escolha o banco de dados que deseja criar. A seguir, crie tantas tabelas quantas forem necessárias.


UMA AGENDA DE ENDEREÇOS 

 
O VB pode ser usado para criar um formulário simples do tipo agenda. Você precisará de um banco de dados com os seguintes campos:
 

  • Nome;
  • Endereço;
  • Telefone;
  • FAX;
  • E-mail;
  • Cidade;
  • Estado;
  • CEP.

 

Este banco de dados pode ser criado em Access ou por meio do Data Manager. Denomine este banco de dados de AGENDA.MDB. Será necessário criar apenas uma tabela dentro deste banco de dados, a qual chamaremos de NOMES.

 
Para exibir os dados de AGENDA.MDB, inicie um novo projeto e posicione os seguintes controles, conforme indicado na figura 22.
 

  • oito rótulos;
  • oito caixas de texto;
  • cinco botões de comando;
  • um controle de dados.

 
Uma aparência mais profissional pode ser conseguida dispondo-se os controles dentro de paineis convenientemente configurados (não mostrados na figura).

 

    Figura 22 - o formulário frmAgenda 

Os próximos passos consistem em conectar o Controle de Dados ao banco de dados e as caixas de texto ao Controle de Dados:  

  1. Na janela de propriedades de Data1, especifique a propriedade DataBaseName para AGENDA.MDB, incluindo todo o caminho;
  2. Especifique a propriedade RecordSource de Data1, que deve corresponder à tabela Nomes;
  3. Defina a propriedade DataSource de cada caixa de texto como sendo Data1. Da mesma forma, especifique a propriedade DataField de cada caixa de texto como o campo correspondente

 

Se você rodar o programa, perceberá que ele já é funcional, ou seja, o Controle de Dados cuida da automação da "navegação pelos registros". Entretanto, ainda não há dados na tabela. Poderíamos usar o Data Manager para prencher a tabela, mas o nosso programa será capaz de fazer isso por si mesmo.

 
O código para adicionar um registro à tabela usa o método AddNew do objeto RecordSet, o qual é automaticamente criado pelo Controle de Dados.
   

Private Sub cmdAdicionar_Click()
    Data1.Recordset.AddNew
    txtNome.Setfocus
End Sub

Para deletar um registro devemos usar o método Delete. Contudo, após a deleção o ponteiro permanece sobre um registro inválido. Além disso, é necessário verifiacar se há registro a ser deletado. Estes procedimentos, que são bastante gerais, são implementados com as funções EOF (End Of File ou Fim do Arquivo) e BOF (Begining of File ou Início do Arquivo).    

Private Sub cmdDeletar_Click()
    If (MsgBox("Quer deletar o registro ?", 36) = 6) Then
        If Data1.Recordset.EOF Or Data1.Recordset.BOF Then
            Beep
            MsgBox "Não há registro a deletar !"
        Else
            Data1.Recordset.Delete
        End If
        Data1.Refresh
        txtNome.Setfocus
    End If
End Sub

O método Refresh é invocado para se reconstruir a tabela após modificações. O ponteiro é enviado para o primeiro registro. A reconstrução é feita a partir de informações contidas no arquivo em disco. Portanto, informações não salvas serão perdidas.
 

Private Sub cmdRefresh_Click()
    Data1.Refresh
    txtNome.Setfocus
End Sub

Para atualizar o registro após a edição, basta usar o método UpdateRecord.

 Private Sub cmdUpdate_Click()
    Data1.UpdateRecord
    txtNome.Setfocus
End Sub

Note que em todas as procedures estamos usando o método Setfocus para definir o foco na caixa de textos txtNome após a operação. Caso contrário, o foco ficaria com o botão em questão. Quando você navega pelos registros usando o Controle de Dados, todas as alterações feitas são automaticamente salvas. Se você quizer perguntar ao usuário se ele desela salvar as alterações, coloque o seguinte trecho no evento Validate de Data1:

 

Private Sub Data1_Validate(Action As Integer, Save As Integer)
    If Save = True Then 'Existem alterações a serem salvas
        If Action = vbDataActionMoveFirst Or vbDataActionMovePrevious _
            Or vbDataActionMoveNext Or vbDataActionMoveLast Then
                If (MsgBox("Quer salvar as atualizações ?", vbYesNo) = vbNo) Then
                    Save = False
                End If
        End If
    End If
    Screen.MousePointer = vbHourglass
End Sub

O evento Validate repassa dois parâmetros:

Action: descreve a ação que gerou o evento, assumindo os valores da tabela a seguir:  

Tabela 20  

Action Valor Método gerador
vbDataActionMoveFirst 1 MoveFirst
vbDataActionMovePrevious 2 MovePrevious
vbDataActionMoveNext 3 MoveNext
vbDataActionMoveLast 4 MoveLast
vbDataActionAddNew 5 AddNew
vbDataActionUpdate 6 Update
vbDataActionDelete 7 Delete
vbDataActionFind 8 Find
vbDataActionBookmark 9 Propriedade bookmark definida
vbDataActionClose 10 Close
vbDataActionUnload 11 UnLoad do formulário

 

Save: é verdadeiro se existem alterações a ser salvas e falso caso contrário.
 

 

No Visual Basic 5.0, os passos acima são brincadeira de criança, uma vez que o próprio Data Manager constrói formulários baseados em tabelas. Após criada a tabela, escolha a opção Utility | Data Form Designer e siga as instruções. Naturalmente, os botões são criados com legendas em inglês, mas isto é fácil de mudar. A disposição das caixas de texto é na vertical e você terá que reposicioná-las a seu gosto. Entretanto, muita coisa do código já está pronta e as caixas de texto já aparecem ligadas ao Controle de Dados.

 


MOVENDO-SE PELOS REGISTROS

 

O Controle de Dados oferece meios para nos movermos ao longo dos registros, mas isto também pode ser feito por meio de código de programação.

  • Data1.RecordSet.MoveFirst: vai para o primeiro registro;
  • Data1.RecordSet.MoveLast: vai para o último registro;
  • Data1.RecordSet.MoveNext: vai para o próximo registro;
  • Data1.RecordSet.MovePrevious: vaia para o registro anterior;

Para editar um registro, devemos, antes prepará-lo para a edição, usando o método Edit,

        Data1.RecordSet.Edit
        Data1.RecordSet.UpDate.

  A primeira linha prepara o registro para a edição. A segunda grava as modificações feitas.

 
Você pode implementar estas alterações em Agenda.vbp, adicionando quatro botões (cmdInício, cmdPróximo, cmdAnterior e cmdÚltimo) para realizar as ações do Controle de Dados. Não se esqueça de inserir o código de verificação de registro válido. Você poderá, então, esconder o Controle de Dados (visible = false) e navegar com os botões.
 

O Controle de Dados só pode mostrar dados nos chamados "controles ligados", que são so seguintes:
 

  • DBCombo;
  • DBList;
  • DBGrid;
  • Label;
  • TextBox;
  • CheckBox;
  • ComboBox;
  • ListBox;
  • PictureBox;
  • Image.

 

Em vez de usar o Controle de Dados, pdemos declarar objetos de Bancos de Dados e trabalhar com eles da mesma forma que trabalhamos com o RecordSet de Data1. . Por exemplo, você pode declarar uma variável Banco de Dados da seguinte maneira,
 

Dim BD As DataBase

 
Em seguida, você deve abrir o banco de dados com o comando OpenDataBase,
 

Set BD = OpenDataBase ("AGENDA.MDB")

 
Para declarar e abrir uma tabela (Table) proceda da seguinte maneira:
 

Dim Tabela As Table
Set Tabela = BD!Nomes.OpenRecordSet(),

onde Nomes é uma tabela válida do banco de dados aberto. Para declarar e abrir um Dynaset, faça o seguinte:
 

Dim Rec As RecordSet
Set Rec = BD!Nomes.OpenRecordSet(dbOpenDynaSet)

 

Para abrir um SnapShot:
 

Dim Snap As SnapShot
Set Snap = BD!Nomes.OpenRecordSet(dbOpenSnapShot)
 


Copyright © 1998/1999 - Desenvolvido por Alvaro Augusto de Almeida (isso significa que você pode manter cópias para uso particular, mas não para divulgação). Dúvidas e sugestões serão bem vindas.   

     
Vai para a página inicial

Acessos desde 30.01.99: 

Enviar e-mail para Alvaro