COMO CRIAR UM .MDB VIA CODIGO E COM SENHA??

LCSD 16/03/2004 11:44:40
#15570
Bom Dia, pessoal....


Eu já sei criar um arquivo .MDB via código pelo VB, mas, eu gostaria de saber, se tem como eu criar este arquivo via código, e na criação dele, definir a senha dele, tem como fazer isso via código???
CAJU 16/03/2004 12:44:38
#15598
Resposta escolhida
Option Explicit

Option Base 1 'Lembra para que serve esta declaração ?

Dim area As Workspace 'Define área de trabalho
Dim banco As Database 'Define área para o .MDB
Dim tabela As TableDef 'Define area para criar uma tabela
Dim campos(6) As Field 'Define área para criar os campos
Dim indice As Index 'Define área para criar um índice
Dim idxcampo As Field 'Define área do campo do índice
Dim tabcli As Recordset 'Usado para abrir a tabela

Dim esttab As TableDef
Dim estcampos(2) As Field
Dim tabest As Recordset

Dim relação As Relation
Dim relcampo As Field


Private Sub cmdCriaBanco_Click()

On Error GoTo erro:

Set area = DBEngine.Workspaces(0)

'Cria a partir do mecanismo "DAO" uma área de trabalho

Set banco = area.CreateDatabase(App.Path & "\livro.mdb", _
dbLangGeneral, dbVersion30)

'Cria o banco de dados .MDB no formato 3.0

Set tabela = banco.CreateTableDef("Clientes")

'Cria a tabela denominada "Clientes"

Set campos(1) = tabela.CreateField("cli_código", dbInteger)

'Cria um campo dentro da tabela Clientes

tabela.Fields.Append campos(1)

'Efetiva a adição do campo dentro da tabela

Set campos(2) = tabela.CreateField("cli_nome", dbText, 40)
tabela.Fields.Append campos(2)

Set campos(3) = tabela.CreateField("cli_endereço", dbText, 40)
tabela.Fields.Append campos(3)

Set campos(4) = tabela.CreateField("cli_cidade", dbText, 20)
tabela.Fields.Append campos(4)

Set campos(5) = tabela.CreateField("cli_estado", dbText, 2)
tabela.Fields.Append campos(5)

Set campos(6) = tabela.CreateField("cli_cep", dbText, 9)
tabela.Fields.Append campos(6)

banco.TableDefs.Append tabela

'Efetiva a adição da tabela Clientes dentro do Banco de Dados

Set indice = tabela.CreateIndex("ChavePrimária")

'Cria um índice para a tabela Clientes

indice.Primary = True 'Chave Primária
indice.Unique = True 'Não aceita dados duplicados

'Define atributos para o índice

Set idxcampo = indice.CreateField("cli_código")

'Cria o campo que será usado com índice

indice.Fields.Append idxcampo

'Efetiva a adição do índice na tabela em questão

tabela.Indexes.Append indice

'Efetiva a adição do índice ao objeto TableDef

'Criando a Tabela de Siglas de Estado

Set esttab = banco.CreateTableDef("estados")

Set estcampos(1) = esttab.CreateField("est_sigla", dbText, 2)

esttab.Fields.Append estcampos(1)

Set estcampos(2) = esttab.CreateField("est_descrição", dbText, 20)

esttab.Fields.Append estcampos(2)

banco.TableDefs.Append esttab

Set indice = esttab.CreateIndex("ChavePrimária")

indice.Primary = True
indice.Unique = True

Set idxcampo = indice.CreateField("est_sigla")

indice.Fields.Append idxcampo
esttab.Indexes.Append indice

'Criando um Relacionamento

Set relação = banco.CreateRelation("Estados_Clientes")

relação.Table = "estados" 'Esta é a tabela PAI

relação.ForeignTable = "clientes" 'Esta é a tabela FILHA

relação.Attributes = dbRelationUpdateCascade

Set relcampo = relação.CreateField("est_sigla")

relcampo.ForeignName = "cli_estado"

relação.Fields.Append relcampo

banco.Relations.Append relação

'O relacionamento foi criado

cmdCriaBanco.Enabled = False 'Desabilita o botão
cmdAbrir.Enabled = True 'Habilita o botão
cmdDeletar.Enabled = True

cmdAbrir.SetFocus 'Foco para o botão Abrir

Exit Sub 'Finaliza a rotina

erro:

MsgBox Format(Err) & "-" & Error
Resume saída

saída:

End Sub
CAJU 16/03/2004 20:51:11
#15664
LCSD, nesse exemplo o Option Base 1 só para começar a contar do 1 e nao do 0

ex:
se eu colocar
campos(6) as filed

só vai existir os campos
campos(1),campos(2),campos(3),campos(4),campos(5),campos(6)
ou seja o campos(0) nao existe
Tópico encerrado , respostas não são mais permitidas