Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Moderado: requer competências básicas de macro, codificação e interoperabilidade.
Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).
Sintomas
Quando guarda uma tabela depois de adicionar um novo campo ou alterar as propriedades de um campo existente, recebe a seguinte mensagem de erro:
Demasiados campos definidos.
Esta mensagem é seguida por:
Foram encontrados erros durante a gravação. Os tipos de dados não foram alterados.
Recebe estas mensagens mesmo que tenha 255 ou menos campos definidos na tabela.
NOTA Também receberá esta mensagem se adicionar ou modificar campos num relatório baseado numa tabela que tenha demasiados campos.
Causa
A contagem de colunas internas que o Microsoft Access utiliza para controlar o número de campos na tabela atingiu 255, embora possa ter menos de 255 campos na tabela. Isto pode acontecer porque o Access não altera a contagem de colunas internas quando elimina um campo. O Access também cria um novo campo (aumentando a contagem de colunas internas em 1) para cada campo cujas propriedades modificar.
Resolução
Para libertar a contagem de colunas internas para campos eliminados ou para campos cujas propriedades modifica, efetue um dos seguintes procedimentos:
Compacte a base de dados. Para tal, aponte para Utilitários de Base de Dados no menu Ferramentas e, em seguida, clique em Compactar e Reparar Base de Dados.
Crie uma nova cópia da tabela. Para o fazer, siga estes passos:
- Tome nota de quaisquer relações com a tabela.
- Selecione a tabela.
- No menu Ficheiro, clique em Guardar Como.
- Na caixa Guardar Tabela "nome da tabela" Para, escreva um novo nome e, em seguida, clique em OK.
- Selecione a mesma tabela que selecionou no passo 2 e, em seguida, prima DELETE.
- Mude o nome da tabela que guardou no passo 3 para o nome da tabela original.
- Restabelecer quaisquer relações com a nova tabela.
Mais informações
No Access, pode definir até 255 campos numa tabela. Se criar 255 campos e, em seguida, eliminar 10, o Access não liberta os campos da contagem de colunas interna. Além disso, para cada campo cujas propriedades modifica, o Access cria um novo campo e não liberta o campo original da contagem de colunas interna.
Passos para Reproduzir o Comportamento
Nota
O código de exemplo neste artigo utiliza Objetos do Microsoft Data Access. Para que este código seja executado corretamente, tem de referenciar a Biblioteca de Objetos do Microsoft DAO 3.6. Para tal, clique em Referências no menu Ferramentas no Visual Basic Revisor e certifique-se de que a caixa de verificação Biblioteca de Objetos do Microsoft DAO 3.6 está selecionada.
- Crie o seguinte código de Visual Basic for Applications para criar uma nova tabela com 255 campos:
' ****************************************************************
' Declarations section of the module
' ****************************************************************
Option Compare Database
Option Explicit
' ****************************************************************
' The Fill_Table() function creates a table in the current database
' named Field Test with 255 fields, each of which has a Text data
' type and a size of one character.
' ****************************************************************
Function Fill_Table()
Dim mydb As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Dim i As Integer
Set mydb = CurrentDb()
Set tbl = mydb.CreateTableDef("Field Test")
For i = 0 To 254
Set fld = tbl.CreateField("Field" & CStr(i + 1))
fld.Type = dbText
fld.Size = 1
tbl.Fields.Append fld
Next i
mydb.TableDefs.Append tbl
End Function
Escreva a seguinte linha na janela Imediato para executar a função e para criar a tabela:
Fill_Table
Veja a tabela Teste de Campos na vista Estrutura e, em seguida, elimine o último campo para que existam apenas 254 campos definidos na tabela.
Adicione novamente o campo e tente guardar a tabela. Tenha em atenção que recebe as seguintes mensagens de erro:
Too many fields defined. Errors were encountered during the save operation. Fields were not added. Properties were not updated.
Referências
Para obter mais informações sobre as especificações da base de dados, clique em Ajuda do Microsoft Access no menu Ajuda, escreva Especificações do Access no Assistente do Office ou no Assistente de Respostas e, em seguida, clique em Procurar para ver os tópicos devolvidos.