DAO - Criando tabelas e definindo índices.

Vou mostrar como criar uma tabela e definir índices usando o bom e velho DAO. No dia a dia para pequenas aplicações ele ainda é bem melhor que a ADO.

A primeira coisa que devemos fazer é definir como será nossa tabela. Como exemplo irei usar uma tabela Contatos definida da seguinte forma:

Campo Propriedade Valor
ClienteCodigo Name ClienteCodigo
  Required True
  Type dbInteger
ClienteNome Name ClienteNome
  Required True
  Size 50
  AllowZeroLength False
ClienteEndereco Name ClienteEndereco
  Required True
  Size 50
  AllowZeroLength False
  Type dbText
ClienteFone Name ClienteFone
  Required True
  AllowZerolength False
  Type dbText

Vamos definir agora a chave primária para a tabela Contatos: (O campo ClienteCodigo será usado como chave primária ). O nome do índice será PrimaryKey.

Indice Propriedade Valor
Primário - Campo ( ClienteCodigo ) Name PrimaryKey
  Primary True
  Requerid True
  Unique True

Agora vamos criar a tabela e o índice como definidos acima. Apenas recordando que para criar um índice em uma tabela devemos ter :

  1. Um objeto TableDef para anexar a definição do índice
  2. Um objeto Index , criando via método CreateIndex() do objeto TableDef
  3. Atualizar as propriedades do objeto Index
  4. Um objeto Field para cada campo da chave índice ( CreateField )
  5. Anexar cada objeto Field ao objeto Index ( Append )
  6. Anexar o objeto index ao objeto TableDef. ( Append )

Então vamos lá:

1-) Inicie um novo projeto no VB e faça uma referência a DAO 3.X

2-) O código é o seguinte: Você pode colocá-lo onde melhor lhe aprouver. Aqui o código esta sendo acionado pelo evento Click de um botão de comando.

Private Sub Command1_Click()
Dim db As Database
Dim tabela As TableDef
Dim campos(4) As Field
Dim indice As Index
Dim ClienteCodigo As Field
Dim i As Integer

On Error GoTo trata_erro

Set db = DBEngine.Workspaces(0).OpenDatabase("c:\teste\biblio.mdb")

Set tabela = db.CreateTableDef("Contatos")

Set campos(0) = tabela.CreateField("ClienteCodigo", dbInteger)
Set campos(1) = tabela.CreateField("ClienteNome", dbText, 50)
Set campos(2) = tabela.CreateField("ClienteEndereco", dbText, 50)
Set campos(3) = tabela.CreateField("ClienteFone", dbText, 50)

campos(0).Required = True
tabela.Fields.Append campos(0)

For i = 1 To 3
  campos(i).Required = True
  campos(i).AllowZeroLength = False
  tabela.Fields.Append campos(i)
Next

'cria objeto Index
Set indice = tabela.CreateIndex("PrimaryKey")

'define as propriedades dos indice
indice.Primary = True
indice.Unique = True
indice.Required = True

'cria objeto field para anexar o indice
Set ClienteCodigo = indice.CreateField("ClienteCodigo")

'anexa o campo ao indiece e o indice a tabela
indice.Fields.Append ClienteCodigo
tabela.Indexes.Append indice

db.Close
Set db = Nothing
Set tabela = Nothing

MsgBox "Tabela e indice criados com sucesso !"

Exit Sub

trata_erro:
MsgBox Err.Number & " # " & Err.Description

End Sub

E, é só isto....