Como obter um aviso quando o número de registros em uma tabela atinge um limite específico

Compartilhe agora:

Uma das principais razões pelas quais as pessoas mudam de uma planilha para um banco de dados é porque o volume de informações que estão armazenando superou o que o Excel é capaz de lidar confortavelmente. Mas mudar para um banco de dados não elimina completamente esse problema, pois as tabelas do banco de dados também têm limites para o número de registros que podem conter. Mas como você pode saber quando uma mesa está se aproximando desse limite? Ou quando simplesmente está ficando muito grande e algum arquivo de dados é necessário? Este artigo irá mostrar-lhe.

Limite de Tamanho das Tabelas de Acesso

Esteja você ciente disso ou não, o Microsoft Access tem um limite para o tamanho que qualquer tabela pode obter (você pode encontrar esse limite verificando o site oficial da Microsoft conforme ele muda com base na versão que você está usando). Por exemplo, no Access 2000, uma tabela só pode conter até 1 GB de informações. Embora isso possa parecer muito, é surpreendentemente fácil atingir esse nível se você não for cuidadoso (ou se os tipos de campo na tabela não forem selecionados/dimensionados adequadamente).

Portanto, a pergunta que você deve fazer a si mesmo não é “algum dia chegarei a esse limite”, mas, em vez disso, você deve se perguntar “como devo ter certeza de que estou abordando bem antes que se torne um problema” - afinal, é melhor evitar um banco de dados Access corrompido em vez de tentar corrigi-lo.

Código VBA para evitar tabelas de acesso superdimensionadas

Uma maneira de conseguir isso é ficar de olho no número de registros dentro da tabela, e é exatamente isso que faremos com nosso código VBA.

Primeiramente, vamos definir o que queremos que nosso código faça:

“Dado um nome de tabela, exibe uma mensagem quando a tabela atinge um determinado 'limite de aviso'”

Usando o código abaixo, você poderá exibir uma mensagem de aviso informando quando a tabela especificada (usando “TableName”) contém x número de linhas ou mais (definido com “WarningLevel”).

NB: Incluí tratamento básico de erros para contabilizar os momentos em que você pode, por exemplo, digitar incorretamente o nome da tabela ao chamar o sub.

Public Function GetTableSize (TableName As String, WarningLevel As Long) Dim errCode As Long Dim dbs As Database Dim tdf As TableDef On Error Resume Next Set dbs = CurrentDb ' A seguinte linha seleciona a definição da tabela usando o nome fornecido - se houver um erro (provavelmente devido ao nome da tabela com erros ortográficos, o código irá pular para o manipulador de erros no final do sub) Set tdf = dbs.TableDefs(TableName) errCode = err.Number On Error GoTo BadTable If tdf.RecordCount >= WarningLevel Then MsgBox TableName & " has " & tdf.RecordCount & " linhas, considere arquivar alguns desses dados", vbExclamation, "Aviso de tamanho da tabela" End If BadTable: If errCode <> 0 Then MsgBox "Ocorreu um erro - você usou o TableName?", vbCritical, "Não foi possível carregar os detalhes da tabela" Set tdf = Nothing Set dbs = Nothing End Sub

Explicação do código

Most do código é auto-explicativo. Primeiro nós start obtendo uma referência ao banco de dados atual (dbs), e então tentamos abrir a definição para a tabela em questão (tdf). Se houver um erro ao selecionar a tabela, é mais do que provável porque a tabela não existe porque o nome fornecido foi digitado incorretamente. Agora que temos uma referência para a definição da tabela, podemos verificar quantas linhas existem na tabela usando a propriedade “RecordCount” que comparamos com nosso “Warning Limit” e agir de acordo.

Usando o Código

Você pode chamar esse código naturalmente de qualquer lugar em seu banco de dados - se estiver usando o Access 2000 ou superior, você pode usar a seguinte solução alternativa; caso contrário, você precisará criar uma macro AutoExec para executar esse código sempre que abrir seu banco de dados ou adicionar a chamada de evento para um evento de formulário.

Access 2000 e superior apenas

A Microsoft introduziu a capacidade de executar ações específicas em uma tabela quando, por exemplo, registros foram inseridos ou excluídos. Infelizmente, executar o código VBA não é uma dessas ações, mas você ficará satisfeito em saber que há uma solução relativamente fácil.

  1. Com a tabela relevante aberta, clique na barra de menu “Tabela”.
  2. Como estamos monitorando o crescimento das tabelas, é melhor usar o evento “After Insert”, então clique neleClique em "Após Inserir"
  3. Como não podemos usar a ação usual “RunCode”, usaremos a ação “SetLocalVar”, então clique nessa opção na lista suspensa de açõesUse a ação "SetLocalVar"
  4. O nome que você dá a isso não é importante, então chame do que quiser - ou seja, dummyVariable
  5. Na Expressão, você pode inserir o nome da sua Função acima, junto com os parâmetros – assim, por exemplo – se eu estivesse monitorando uma tabela “vendas” eu inseriria o seguinte no campo Expressão: GetTableSize(“vendas”,100000 )Defina o nome e a expressão
  6. Salve a ação e feche-a.

Agora o código será executado sempre que você adicionar novos registros à tabela e você será avisado sempre que a tabela atingir o número definido de registros – exatamente o que queremos!

Introdução do autor:

Mitchell Pond é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo reparar SQL Server erro e produtos de software de recuperação do Excel. Para mais informações visite www.datanumen.com

Compartilhe agora:

Uma resposta para “Como receber um aviso quando o número de registros em uma tabela atinge um limite específico”

Deixe um comentário

O seu endereço de e-mail não será publicado. Os campos obrigatórios são marcados com *