Rotina para criar uma base de dados e tabelas usando DAO. Iremos criar as tabelas: agendamentos e enderecos com a seguinte estrutura:
A rotina abaixo cria o banco de dados agenda.mdb e a seguir cria as tabelas descritas acima. O código deve estar em um módulo.
Você poderia chamar a rotina na abertura de seu programa após verificar se a base de dados existe.Seu código seria algo como o código abaixo:(No exemplo criamos o banco de dados agenda.mdb)
Sub Main 'verifica se o banco de dados existe 'If Len(Dir("C\caminho\seu_mdb.mdb")) = 0 Then call cria_basedados 'End If 'define area ativa e abre arquivo de dados end sub |
Public Sub cria_basedados() On Error GoTo cria_erro 'usa o metodo createdatabase do objeto workspace para criar a base de dados 'dblanggeneral => define a base para os idiomas : ingles,alemao,frances,portugues,italiano e espanhol 'dbversion30 => cria a base na versao 3.0 do MsJet mas compativel com a versao 3.5 - só 32 bits Set area = DBEngine.Workspaces(0) Set db = area.CreateDatabase("c:\agenda\agenda.mdb", dbLangGeneral, dbVersion30) 'bem agora vamos criar as tabelas 'tabela agendamentos Set tbl = db.CreateTableDef("agendamentos") 'cria tabela no banco de dados recem criado 'vamos criar os campos da tabela agendamentos : 'campo codigoagenda : tipo numerico - inteiro longo Set cpo = tbl.CreateField("codigoagenda", dbLong) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao 'campo hora : tipo date/time Set cpo = tbl.CreateField("hora", dbDate) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao 'campo evento : tipo texto , 150 posições Set cpo = tbl.CreateField("evento", dbText, 150) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao 'campo data : tipo date/time Set cpo = tbl.CreateField("data", dbDate) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao 'campo detalhe : tipo texto , 200 posições Set cpo = tbl.CreateField("detalhe", dbText, 200) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao 'agora vamos inserir o objeto tabela a colecao db.TableDefs.Append tbl 'Agora podemos criar os índices da nossa tabela agendamentos 'ela possui o codigoagenda como chave primaria Set tbl = db.TableDefs("agendamentos") Set idx = tbl.CreateIndex("PrimaryKey") 'cria indice com o nome primarykey Set cpo = idx.CreateField("codigoagenda") idx.Fields.Append cpo idx.Primary = True 'define o indice como chave primaria tbl.Indexes.Append idx 'insere o indice criado a colecao 'criacao do indice hora para o campo hora Set tbl = db.TableDefs("agendamentos") Set idx = tbl.CreateIndex("hora") 'cria indice com o nome hora Set cpo = idx.CreateField("hora") idx.Fields.Append cpo tbl.Indexes.Append idx 'insere o indice criado a colecao 'criacao do indice data para o campo data Set tbl = db.TableDefs("agendamentos") Set idx = tbl.CreateIndex("data") 'cria indice com o nome data Set cpo = idx.CreateField("data") idx.Fields.Append cpo tbl.Indexes.Append idx 'insere o indice criado a colecao '================================================================ 'vamos criar a tabela enderecos e os seus campos Set tbl = db.CreateTableDef("enderecos") 'cria tabela no banco de dados recem criado Set cpo = tbl.CreateField("codigocadastro", dbLong) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao Set cpo = tbl.CreateField("sobrenome", dbText, 50) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao Set cpo = tbl.CreateField("nome", dbText, 50) 'define campo : nome e tipo de dados tbl.Fields.Append cpo 'insere o novo objeto (campo/coluna) a colecao
|
Um tanto trabalhoso não !!!!!
Vamos lembrar a estrutura de classes do DAO.(estrutura simplificada). O DAO obedece uma hierarquia na construção de objetos, assim, você não pode criar um objeto TableDef sem antes criar um objeto DataBase. Desta forma para criar uma tabela devemos seguir os seguintes passos:
O objeto DBEngine é o topo da hierarquia DAO e representa o próprio Microsoft Jet Engine de acesso aos dados.
DAO- Estrutura simplificada | DAO -Detalhamento da coleção TableDefs |
Vejamos os principais métodos relacionados com a definição de Banco de dados, tabelas e índices:
Obs.: Note que quando um arquivo é aberto ou criado , devemos especificar uma área de trabalho. Se não definirmos nenhuma o próprio Visual Basic abre o arquivo na área de trabalho padrão (default) , identificado pelo índice (0) da coleção Workspaces do objeto DBEngine.
E estamos conversados...