Option Explicit
' Função para criar um índice em uma tabela do Access
Public Sub CreateIndex()
On Error GoTo ErrorHandler
' Definindo variáveis para a tabela e o índice
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim idx As DAO.Index
Dim fld As DAO.Field
' Obtendo o banco de dados atual
Set db = CurrentDb
' Definindo a tabela onde o índice será criado
Set tdf = db.TableDefs("MinhaTabela") ' Substitua "MinhaTabela" pelo nome real da tabela
' Verificando se o índice já existe para evitar duplicação
On Error Resume Next
Set idx = tdf.Indexes("IDX_Nome") ' Substitua "IDX_Nome" pelo nome do índice
On Error GoTo ErrorHandler
If Not idx Is Nothing Then
MsgBox "Índice já existe. Nenhuma ação realizada.", vbExclamation, "Aviso"
Exit Sub
End If
' Criando um novo índice
Set idx = tdf.CreateIndex("IDX_Nome") ' Nome do índice
idx.Unique = False ' Define se o índice será único (True ou False)
idx.Primary = False ' Define se o índice será uma chave primária (True ou False)
' Adicionando campos ao índice
Set fld = idx.CreateField("Campo1") ' Substitua "Campo1" pelo nome do campo da tabela
idx.Fields.Append fld ' Adiciona o campo ao índice
' Caso queira adicionar mais campos ao índice, use:
' Set fld = idx.CreateField("Campo2") ' Adicione outros campos conforme necessário
' idx.Fields.Append fld
' Adicionando o índice à tabela
tdf.Indexes.Append idx
' Confirmando a criação do índice
MsgBox "Índice 'IDX_Nome' criado com sucesso.", vbInformation, "Sucesso"
' Finalizando
Exit Sub
ErrorHandler:
' Exibe uma mensagem de erro caso algum problema ocorra
MsgBox "Erro Nº: " & Err.Number & "; Descrição: " & Err.Description, vbCritical, "Erro"
Set idx = Nothing
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
End Sub
' Função para demonstrar o uso do índice na consulta
Public Sub UseIndexInQuery()
On Error GoTo ErrorHandler
' Definindo a variável para a consulta SQL
Dim strSQL As String
' Consulta utilizando o índice criado
strSQL = "SELECT * FROM MinhaTabela WHERE Campo1 = 'AlgumValor'" ' Substitua com sua consulta real
' Executando a consulta com o índice
CurrentDb.Execute strSQL, dbFailOnError
MsgBox "Consulta executada utilizando o índice.", vbInformation, "Sucesso"
Exit Sub
ErrorHandler:
' Exibe uma mensagem de erro caso algum problema ocorra
MsgBox "Erro Nº: " & Err.Number & "; Descrição: " & Err.Description, vbCritical, "Erro"
End Sub