
























































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostila VB5
Tipologia: Notas de estudo
1 / 64
Esta página não é visível na pré-visualização
Não perca as partes importantes!

























































Power Informática – Santana do Livramento – RS – Brasil
Agradecimentos
Embora tenha custado horas e horas de montagem (word) essa apostila não teria sido confeccionada se eu não tivesse encontrado a “Home Page” do José Carlos Macoratti – Visual Basic Banco de dados. Excelente trabalho de garimpo deste profissional que com certeza prova que podemos encontrar vários serviços de boa qualidade e de graça na Internet. Por favor se quiserem agradecer visitem este site.
Trabalhos de edição e montagem:
Carlos Alberto Nunes Susviela Santana do Livramento – RS – Brasil [email protected] http://www.geocities.com/SiliconValley/Haven/
Podemos entender por banco de dados qualquer sistema que reuna e mantenha organizada uma série de informações relacionadas a um determinado assunto em uma determinada ordem. A lista telefônica é um exemplo, nela percebemos que todos os dados referentes a uma pessoa estão na mesma linha, a isso chamamos registros..
O tipo ou categoria da informação (nome, telefone, etc.) sobre uma pessoa está separada em colunas, as quais chamamos campos..
Um Sistema Gerenciador de banco de dados relacionais(SGBDR) é usado para armazenar as informações de uma forma que permita às pessoas examiná-las de diversas maneiras.
O Gerenciador relacional de bancos de dados do Visual Basic e do Access é o Microsoft Jet, ele pertence a uma categoria diferente dos Gerenciadores tradicionais, como o Dbase e o Paradox, pois possue características em comum com os banco de dados cliente-servidor. Tais características comuns são:
No Dbase/Clipper banco de dados significa um arquivo que contém a estrutura de dados(campos) e os dados (Arquivo padrão DBF). Para o padrão MDB este conjunto de dados e sua estrutura denomina-se Tabela. Portanto aquilo que o Dbase/Clipper considera um banco de dados o Access e o Visual Basic considera como uma Tabela.
Para o Access e o Visual Basic todos os componentes do sistema estão em um único arquivo com extensão MDB, a este "pacote" consideramos o banco de dados.
Logo quando abrimos um arquivo MDB temos acesso a todos os componentes do sistema : tabelas, consultas, macros, relatórios, etc. A esses componentes chamamos objetos do sistema e em resumo podemos descrevê-los a seguir:
Tabelas Onde armazenamos as informações que queremos tratar. Consultas Filtram as informações das tabelas e permitem sua visualização. Geralmente são comandos SQL. Formulários São janelas destinadas à edição e visualização dos dados. Relatórios Organizam os dados de tabelas e consultas de uma maneira que possam ser impressos Macros Rotinas que automatizam determinadas tarefas sem necessidade de programação. (Utilizadas no Access) Módulos Armazenam instruções e comandos da linguagem Access Basic/VBA e permitem melhorar e expandir os recursos do sistema.
Obs:
Embora o Visual Basic utilize arquivos padrão MDB; Formulários, Relatórios e Módulos são tratados de forma diferente pelo próprio Visual Basic e, nativamente, o Visual Basic não utiliza Macros.
As tabelas são o coração dos bancos de dados, e, uma das tarefas fundamentais que você deverá fazer será organizar os dados em tabelas. Para criar uma tabela no Visual Basic você pode usar o Data Manager, mas, uma maneira mais fácil, se você tiver o Access, será utilizar os seus recursos para este fim. Aqui descreveremos como criar uma tabela no Access sem a ajuda de um assistente. Basicamente você irá dar nome aos campos (colunas), e definir o tipo de dados para estes campos. Isto depende da informação que deseja armazenar no campo; se for armazenar um dado que não fará parte de cálculos, um nome por exemplo, o tipo pode ser texto , se for armazenar valores numéricos que farão parte de cálculos o tipo será numérico(inteiro, simples...) , se for armazenar datas o tipo será data e assim por diante.
O tamanho do campo define a quantidade de informação relacionada ao item que você pode armazenar, assim : para um campo do tipo texto com tamanho 30 você poderá armazenar textos com no máximo 30 caracteres, um campo numérico de tamanho 2 armazena números com até dois dígitos.
Vejamos como exemplo a estrutura de uma tabela que chamaremos Clientes. Como o nome indica ela deverá guardar informações sobre os clientes, decidimos que tais informações serão: Código, Nome, Endereço, Cep e idade:
Exemplo de Tabela Clientes
Nome do Campo Tipo do Dado armazenado Comprimento para o campo Codigo Numerico 3 Nome Texto 40 Endereco Texto 40 Cep Texto 8 Idade Numerico 3
Embora não exista nenhuma regra absoluta para os dados que devem ser colocados em cada tabela, damos abaixo diretrizes gerais para um projeto de banco de dados eficiente:
Para cada linha que você adiciona a sua tabela você tem um registro. Feito isto é importante você definir os relacionamentos entre as tabelas de seu banco de dados. Por exemplo se você criou duas tabelas, uma para os clientes e outra para os pedidos feitos por esses clientes, voce poderá relacionar as duas tabelas por meio de um campo código do cliente comum às duas tabelas.
Criando Tabelas no Access ( No Visual Basic use o Data Manager )
É possível criar uma tabela com um Assistente de Tabela, mas se ele não oferecer o tipo de tabela desejada, pode-se criar a tabela sem ajuda. Mesmo que não se utilize o Assistente de Tabela pode-se usar o Construtor de Campos para selecionar campos individuais das tabelas de amostra do Assistente de Tabela.
Para criar uma tabela sem um Assistente (Access versão 2.0 )
1-Na janela Banco de Dados, clique no botão "Tabela" e, então, escolha o botão "Novo". 2-Na caixa "Nova Tabela", clique no botão "Nova tabela".
O Microsoft Access exibe a janela Tabela no modo Estrutura, no qual são definidos os campos da tabela.
Para definir campos na tabela
1 - Na coluna "Nome do Campo" digite o nome do primeiro campo seguindo as convenções de nomenclatura padrão do Microsoft Access. -Ou- Clique no botão "Construir" na barra de ferramentas e selecione o campo a partir do Construtor de Campos. O tipo de dados e outras propriedades para cada campo já estão definidas, embora possam ser alterados caso desejado.
2 - Na coluna "Tipo de Dados", mantenha o padrão (Texto) ou clique na seta e selecione o tipo de dados desejado.
3 - Na coluna "Descrição" digite a descrição da informação que este campo irá conter. A descrição é opcional.
4 - Se desejar, defina as propriedades do campo na parte inferior da janela.
5 - Repita os passos de 1 a 4 para cada campo.
Para salvar a tabela
1 - Após terminar de definir os campos clique no botão "Salvar" na barra de ferramentas ou escolha o comando Salvar no menu Arquivo para salvar a estrutura da tabela. O Microsoft Access, então, envia uma mensagem pedindo para nomear a tabela.
2 - Digite um nome para a tabela conforme as convenções de nomenclatura do Microsoft Access e, então, escolha OK.
Observações
É recomendável que se designe o campo de () chave primária* em qualquer tabela. Se isto não for feito o Microsoft Access pergunta ao usuário se este deseja que o programa crie uma chave primária quando salvar a tabela pela primeira vez. Adicionalmente à definição das propriedades de campo, pode-se, também, definir as propriedades da tabela. As propriedades da tabela são atributos de toda a tabela, preferencialmente a campos individuais apenas. Quando uma coluna ou caixa de propriedades é clicada, o Microsoft Access exibe dicas úteis acerca de cada coluna ou propriedade na porção inferior direita da janela. Após criar tabelas, pode-se criar consultas, formulários, relatórios e outros objetos de banco de dados que auxiliam o usuário a manipular seus dados.
()* - A chave primária é um campo ou combinação de campos que permite a identificação única de cada registro de uma tabela. Assim como o índice principal para a tabela, ela é utilizada para associar dados entre tabelas. Se uma tabela não inclui um campo de chave primária óbvio, o Microsoft Access pode criar um campo que designa um número único para cada registro.
Obs: O Data Manager não admite a edição de um campo componente de uma expressão de índice ou de um relacionamento. Nestes casos, é obrigatória a remoção do índice ou do relacionamento.
A criação de um índice de uma tabela no Data Manager é simples. Basta seleciona r a janela Table Editor , clicar no botão Indexes , e, seguir os passos indicados:
Obs: Para definir um relacionamento, é indispensável que o campo origem seja a chave primária da tabela primária. Além disso o campo definido como chave externa deve ser do mesmo tipo de dado da chave primária.
Não se pode utilizar filtros para restringir os registros usando determinados critérios. O comando Seek só encontra o primeiro registro que atende a seus critérios.
Abertura de uma tabela para utilização Para abrir uma tabela, defina um objeto Recordset e use o método OpenRecordset para acessar a tabela.
Informe a constante DbOpenTable para identificar o tipo de recordset criado. Veja o código abaixo:
Dim meubd as Database Dim minhatbl as Recordset Set meubd = DBEngine.Workspaces(0).OpenDatabase("C:\meudir\dados.mdb") Set minhatbl = meubd.OpenRecordset("Clientes",DbOpenTable)
A novidade em relação ao código acima é a definição da variável objeto tipo Recordset minhatbl e atribuição a esta variável da tabela Clientes do banco de dados Dados.mdb. Note que o arquivo de banco de dados é padrão Access.
Um dynaset é um conjunto de ponteiros de registros provenientes de uma ou mais tabelas,e indicam os dados especificados existentes quando da criação do dynaset. Os dynasets são recordsets atualizáveis e refletem as alterações feitas pelo usuário nas tabelas e no próprio dynaset.
Vantagens do uso de Dynasets Permitem reunir informações de diversas tabelas, através de instruções SQL. Permitem utilizar os métodos de busca Find e o uso de filtros e ordem de classificação para mudar a visão dos dados.
Desvantagens do uso de Dynasets Não admitem a criação de índices e do método Seek Não reflete inclusões ou exclusões feitas por outros usuários. Para mostrar as alterações é necessário renovar (refresh) o dynaset
Configuração de um Dynaset Para utilizar um dynaset você deve definir um objeto recordset (Dim) e depois gerar o dynaset com o método OpenRecordset. Para selecionar os registros você pode usar uma instrução SQL. Veja exemplo abaixo:
Dim meubd as Database Dim meudyn as Recordset Set meubd = DBEngine.Workspaces(0).OpenDatabase("C:\meudir\dados.mdb") Set meudyn = meubd.OpenRecordset("SELECT * FROM Clientes", DbOpenDynaset)
Definimos a variável objeto meudyn, abrimos o banco de dados e a seguir criamos um dynaset que é composto por todos os registros da tabela Clientes, através da instrução SQL que seleciona (SELECT) todos (*) os registros da tabela Clientes.
Obs: Também é possível criar um dynaset a partir de outro dynaset.
Um snapshot é uma cópia dos dados de um recordset em um dado instante. Ele é muito semelhante a um dynaset pois pode ser criado a partir das tabelas básicas com as mesmas instruções.(SQL, QueryDef,...). A diferença principal é que um snapshot não é pode ser atualizado.
Vantagens do uso de Snapshots Permitem reunir informações de diversas tabelas. Permitem utilizar os métodos de busca Find e o uso de filtros e ordem de classificação para mudar a visão dos dados.
Para os snapshots , navegação pelos registros e a criação de recordsets pode ser mais rápida do que nos dynasets.
Desvantagens do uso de Snapshots Um snapshot não pode ser atualizado. Um snapshot não admite a criação de índices.
Configuração de um Snapshot Para utilizar um snapshot você deve definir um objeto recordset (Dim) e depois gerar o snapshot com o método OpenRecordset. Para selecionar os registros você pode usar uma instrução SQL. Veja exemplo abaixo:
Dim meubd as Database Dim meusnap as Recordset Set meubd = DBEngine.Workspaces(0).OpenDatabase("C:\meudir\dados.mdb") Set meusnap = meubd.OpenRecordset("SELECT * FROM Clientes", DbOpenSnapshot)
O código é praticamente idêntico ao utilizado para a criação de um dynaset.
Os métodos de movimentação permitem a passagem de um registro para outro no interior dos recordsets , e alteram a posição do ponteiro do registro ao passar de um registro ativo para outro registro. Você pode usar os métodos de movimentação sobre quaisquer recordsets. Vejamos a seguir os métodos de movimentação: MoveFirst:
Movimenta o ponteiro do registro ativo para o primeiro registro do recordset aberto.
MoveNext:
Movimenta o ponteiro do registro ativo para o registro seguinte. Se não houver registro seguinte, você está no último registro, o flag de final de arquivo EOF será ativado.
MovePrevious:
Desloca o ponteiro do registro ativo para o registro anterior no recordset aberto. Se não houver registro anterior, você está no primeiro registro, o flag de início de arquivo BOF será ativado.
MoveLast:
Movimenta o ponteiro do registro ativo para o último registro do recordset aberto.
Move n
Desloca o ponteiro de registro n registros para frente ( n positivo ) ou para trás ( n negativo ) a partir do registro ativo no recordset aberto. Se o deslocamento levar o ponteiro de registro além dos limites do recordset ocorrerá um erro.
Utilizamos os métodos de localização para localizar registros que satisfaçam a critérios determinados. Os métodos de localização somente podem ser utilizados em Dynasets e Snapshots. Não é possível utilizá-los em objetos Tabela.
Vejamos a seguir os métodos de Localização: FindFirst: A partir do início do recordset, localiza o primeiro registro que atende aos critérios definidos. FindNext: A partir da posição atual no recordset, localiza o registro seguinte ( próximo ) que satisfaz aos critérios definidos. FindPrevious: A partir da posição atual no recordset, localiza o registro seguinte( anterior ) que satisfaz aos critérios definidos. FindLast: A partir do início do recordset, localiza o último registro que satisfaz aos critérios definidos.
Que é o Controle de dados.
O controle de dados foi criado para proporcionar um meio simples de acesso a um banco de dados. Para usar o controle de dados, siga os passos a seguir: Selecione o controle na caixa de ferramentas. Desenhe o controle em seu formulário. Defina a propriedade DatabaseName Defina a propriedade Recordsource Defina a propriedade RecordsetType
A essa altura você criou os vínculos para o banco de dados e o Recordset com o qual deseja trabalhar. O controle assume para si as tarefas de: Abrir o banco de dados e as tabelas ou consultas associadas. Navegar pelos registros.(Utiliza métodos MoveFirst,Movelast,Movenext e Moveprevious. ) Carregar os valores diversos campos nos controles utilizados para exibir e editar os dados. Gravar os dados editados dos controles no Recordset
Com base nas propriedades Name e RecordSource o controle de dados cria um Recordset que fornece acesso aos seus dados.
De início selecione o objeto controle de dados na Toolbox do Visual Basic e acrescente-o ao seu formulário.(Fig.1)
Fig-
Defina a seguir as propriedades Name - Nome do Controle (O padrão é data1 ) e Caption - Especifica o nome que aparece no controle de dados.(O padrão é Data1 ) e dimensione o controle de dados.(Fig.2)
Fig-
A seguir acrescente ao seu formulário um quadro de texto( TextBox ) para cada campo que desejar acessar a partir do Recordsource, anexe cada quadro de texto ao objeto de controle de dados( DataSource ) e especifique o campo que cada quadro de texto deverá exibir( DataField ).(fig3.)
Fig-
Definição de Propriedades.
Agora você deve associar um banco de dados e um recordset a um controle de dados definindo as propriedades do controle. As propriedades necessárias a isso são :
DatabaseName - Para bancos de dados do Access , representa o nome do arquivo do banco de dados, inclusive o nome completo do caminho. (Para banco de dados diferentes do Access é necessário informar o nome do caminho até o subdiretório dos dados. Ex-Para padrão Dbase : DatabaseName=c:\dir)
RecordSource - Especifica as informações que deseja obter no banco de dados - uma tabela, uma instrução SQL.
RecordsetType - Se deseja criar um 2-snapshot ou um acessar uma 0-table altere esta propriedade, pois o padrão é 1-dynaset.
Connect - Necessária quando o banco de dados não for do Access. Ex - Para banco de dados padrão Dbase - Connect=dBASEIII.
É possível optar por ativar essas propriedades durante a execução do seu aplicativo. Vejamos um exemplo: Você acrescentou um controle dados a seu formulário e definiu a propriedade Name como Data1 , e quer ter acesso no arquivo TESTE.MDB (arquivo access) aos dados da tabela clientes, vejamos o código abaixo:
data1.DatabaseName="C:\TESTE\TESTE.MDB" 'path/nome do arquivo data1.RecordSource="Clientes" 'fonte dos dados(tabela clientes) data1.recordsetType=0 'tipo de recordset(0-tabela) data1.Refresh 'implementa as alterações
Control Data: Vantagens/Limitações.
Vantagens Controle de Dados
A principal vantagem do controle de dados é a necessidade de menor trabalho de programação para desenvolver um aplicativo de aceso de dados. Você não precisa fornecer código de programa para abrir ou criar um banco de dados ou um recordset, para se movimentar pelos registros ou para editar registros. Vínculo direto com os dados. Você não precisa invocar os métodos Edit e Update para modificar os dados contidos no banco de dados. As alterações aparecem no banco de dados tão logo são digitadas. Os vários controles vinculados( DbList, DbCombo, DbGrid, ... ) oferecem um meio fácil de realizar tarefas que via código seriam complexas.
As limitações do Controle de dados
Não apresentam função para alterar ou excluir registros. É mais difícil a implementação do processamento de transações. Um número excessivo de controles vinculados em um formulário torna a sua carga mais lenta.
Adição, Alteração, inclusão e validação de dados
Para contornar a ausência de funções para excluir e alterar registros podemos acrescentar as mesmas á tela de entrada de dados usando comandos de programa atribuídos a um botão de comando ou a eventos do controle de dados. Vejamos um exemplo de código que poderia ser atribuído a botões de comando de um formulário de entrada de dados:
1-Botão para inclusão de dados:
data1.Recordset.AddNew
2-Botão para exclusão de dados:
O Controle de dados é ótimo para prototipação de um aplicativo, pois você pode desenvolver rapidamente os formulários. Para um sistema multiusuário de uso intenso o controle de dados pode não ser uma boa escolha, pois pode aumentar a quantidade de conflitos de bloqueio de registros. Provavelmente a melhor solução seja o uso combinado dos controle de dados e de código de programa.
Quem já utilizou como ferramenta de programação uma linguagem procedural como o Clipper deverá se lembrar que o código do programa era um fluxo contínuo onde havia chamadas a outros programas e onde o usuário deveria obedecer a uma ordem pré-determinada pela aplicação; como exemplo temos que em uma tela de entrada de dados para Nome do Cliente, Endereço, Cep e idade se o usuário quisesse entrar o número do Cep, deveria passar obrigatoriamente pelos campos anteriores. Os programas que rodam sob o windows não se comportam dessa maneira. Você constrói o seu código em torno de eventos , e,eventos são determinados pela ação do usuário e podem ser : pressionar um botão, adicionar, alterar, excluir um registro,selecionar uma opção, etc. Então, os programas e funções são acionados por eventos que são reconhecidos pelos objetos do sistema que respondem aos eventos à medida que eles forem ocorrendo, executando as rotinas programadas. Existem várias categorias de eventos, entre elas podemos citar:
1-Eventos de Janela (Ao Abrir,Form_load,etc.) 2-Eventos de Dados (Ao Alterar,etc.) 3-Eventos de foco (Ao Receber Foco,Getfocus,etc.) 4-Eventos de teclado (Ao Pressionar Tecla,Keypress,etc.) 5-Eventos de mouse (Ao Clicar,Click,etc.) 6-Eventos de impressão (Ao Imprimir, etc.) 7-Eventos de erros (OnError)
Vejamos alguns eventos:
Evento Click Ocorre quando o usuário pressiona e libera um botão do mouse sobre um objeto. O evento Click também pode ocorrer quando a definição da propriedade Value de um controle é alterada. Normalmente, você anexa uma macro ou procedimento de evento Click a um botão de comando para executar comandos ou ações compatíveis.
Evento Change Ocorre quando o conteúdo de uma caixa de texto ou porção de texto de uma caixa de combinação> é alterado. Exemplos deste evento incluem o fornecimento de caracteres diretamente na caixa de texto ou caixa de combinação, ou a alteração da definição da propriedade Text de um controle usando-se uma macro ou o Access Basic. Durante a execução de uma macro ou um evento de procedimento, quando ocorrer um evento Change, você pode coordenar a exibição de dados entre os controles. Poderá também exibir os dados em um formulário de um controle, e os resultados em um outro controle.
Evento Load Ocorre quando um formulário é aberto e os registros são exibidos. O evento Load pode ocorrer quando uma aplicação se inicia.
Eventos Open, Close Open - para os formulários, o evento Open ocorre quando um formulário é aberto, mas antes que o primeiro registro seja apresentado. Para os relatórios, o evento ocorre antes que um relatório seja visualizado ou impresso.
Close - ocorre quando um formulário ou relatório é fechado e removido da tela. O evento Open ocorre antes do evento Load , que por sua vez é disparado quando um formulário é aberto e seus registros exibidos.
O evento Close ocorre depois do evento Unload, que é disparado depois que o formulário é fechado, mas antes que ele seja removido da tela. Os formulários, relatórios, botões de comando, caixa de listagem, caixa de verificação, botão de opção, grupo de opção e demais objetos possuem propriedades, métodos e eventos associados que podemos utilizar para executar rotinas apropriadas ao contexto. Além disso eventos podem disparar outros eventos.
A linguagem SQL (Structured Query Language) é uma linguagem de alto nível para manipulação de dados dentro do modelo relacional. Seu objetivo é fornecer uma interface de alto nível ao usuário. É uma linguagem não procedural, e,não cabe ao usuário definir como o gerenciador de banco de dados executará uma tarefa, mas somente o ele que deve fazer. Uma instrução SQL consiste em três partes:
As declarações de parâmetros A instrução manipulativa As declarações de opções
Para termos uma idéia do seu poder, imagine que temos que atualizar o campo valor em 10% de uma tabela com diversos registros. Na abordagem procedural teríamos os seguintes passos a seguir:
Abrir a tabela. posicionar o ponteiro no início da tabela. atualizar o campo valor em 10%. mover o ponteiro para o próximo registro. continuar a atualização do campo valor até o final da tabela.
O código poderia ter o seguinte aspecto:
Dim db as database Dim tabela as recordset set db=workspaces(0).Opendatabase("c:\base.mdb") set tabela=db.Openrecordset("tabela") Whilel not tabela.eof tabela.edit tabela.valor=tabela.valor*1. tabela .update tabela.movenext Wend tabela.close
Agora utilizando uma instrução SQL teríamos o seguinte trecho de código:
Dim db as Database Set db=Workspaces(0).Opendatabase("c:\base.mdb") db.execute "UPDATE tabela SET valor=valor*1.10" db.close
Observe a utilização da instrução SQL UPDATE , bem mais simples, não é? Então se você não está utilizando a SQL, estará trabalhando muito e seu código sofrendo as conseqüências. Vejamos na tabela abaixo um resumo das cláusulas manipulativas e suas finalidades:
Instrução Função SELECT Obtém um grupo de registros e insere os registros em um dynaset ou em uma tabela UPDATE Define os valores dos campos de uma tabela em uma atualização