Desempenho lento em tabelas vinculadas no Access 2002, no Office Access 2003 e no Office 2007

Traduções deste artigo Traduções deste artigo
ID do artigo: 275085 - Exibir os produtos aos quais esse artigo se aplica.
Para obter uma versão deste artigo para o Microsoft Access 2000, consulte 261000.
Novato: Requer conhecimentos de interface do usuário em computadores de usuário único.

Este artigo se aplica a um banco de dados do Microsoft Access (.mdb).

Expandir tudo | Recolher tudo

Sintomas

Ao abrir uma tabela vinculada no Microsoft Access 2002, no Microsoft Office Access 2003 ou no Microsoft Office Access 2007 que pode exibir registros relacionados em uma subfolha de dados, o processo demora notavelmente mais tempo do que se você usar o mesmo banco de dados no Microsoft Access 97.

Causa

Esse comportamento ocorre se houver muitas tabelas vinculadas em um banco de dados contendo também muitas relações, e a tabela que você está abrindo tiver sua propriedade Nome da subfolha de dados definida como [Auto].

Resolução

Para solucionar esse problema, defina a propriedade Nome da subfolha de dados da tabela como [Nenhum]. É possível fazer isso manualmente ou usando um código.

Definindo a propriedade Nome da subfolha de dados manualmente

Para definir a propriedade Nome da subfolha de dados manualmente, execute as seguintes etapas.

Observação Essas etapas funcionam apenas no Access 2002.
  1. No banco de dados back-end, abra a tabela no modo Design.
  2. No menu Exibir, clique em Propriedades.
  3. Defina a propriedade Nome da subfolha de dados como [NENHUM].
  4. Salve e feche a tabela.

Definindo a propriedade Nome da subfolha de dados para todas as tabelas usando um código

É possível usar uma função do Visual Basic for Applications para definir automaticamente a propriedade Nome da subfolha de dados para todas as tabelas que não são do sistema em um banco de dados como [NENHUM]. Para fazer isto, execute as seguintes etapas:
  1. Abra o banco de dados back-end.
  2. Na janela Banco de Dados, clique em Módulos e em Novo.
  3. No menu Ferramentas, clique em Referências. Verifique se a caixa de seleção Microsoft DAO 3.6 Object Library está marcada e clique em OK.
  4. Digite ou cole o seguinte código no novo módulo.
    Sub TurnOffSubDataSheets()
    Dim MyDB As DAO.Database
    Dim MyProperty As DAO.Property
    Dim propName As String, propVal As String, rplpropValue As String
    Dim propType As Integer, i As Integer
    Dim intCount As Integer
    
    On Error GoTo tagError
    
    Set MyDB = CurrentDb
    propName = "SubDataSheetName"
    propType = 10
    propVal = "[None]"
    rplpropValue = "[Auto]"
    intCount = 0
    
    For i = 0 To MyDB.TableDefs.Count - 1
        If (MyDB.TableDefs(i).Attributes And dbSystemObject) = 0 Then
            If MyDB.TableDefs(i).Properties(propName).Value = rplpropValue Then
                 MyDB.TableDefs(i).Properties(propName).Value = propVal
                 intCount = intCount + 1
            End If
        End If
    tagFromErrorHandling:
    Next i
    
    MyDB.Close
    
    If intCount > 0 Then
        MsgBox "The " & propName & " value for " & intCount & " non-system tables has been updated to " & propVal & "."
    End If
    
    Exit Sub
    
    tagError:
    If Err.Number = 3270 Then
        Set MyProperty = MyDB.TableDefs(i).CreateProperty(propName)
        MyProperty.Type = propType
        MyProperty.Value = propVal
        MyDB.TableDefs(i).Properties.Append MyProperty
        intCount = intCount + 1
        Resume tagFromErrorHandling
    Else
        MsgBox Err.Description & vbCrLf & vbCrLf & " in TurnOffSubDataSheets routine."
    End If
    End Sub
    
  5. Na janela Imediato, digite o seguinte texto e pressione ENTER para executar a função:
    TurnOffSubDataSheets
    						
    Observe que após um curto período de tempo, se todas as tabelas ainda não estiverem atualizadas, uma caixa de mensagem será exibida informando que a propriedade SubDataSheetName para as tabelas <NumberOfTablesUpdated> que não são do sistema foram atualizadas como [NENHUM].

Mais Informações

O Office Access 2007, o Access 2003, o Access 2002 e o Access 2000 permitem a exibição dos registros relacionados de uma tabela em uma subfolha de dados; essa funcionalidade não está disponível no no Access 97. Para gerenciar as relações entre as tabelas principal e relacionadas, o sistema exige uma sobrecarga adicional que pode aumentar o tempo de resposta, particularmente quando um banco de dados tem um grande número de tabelas vinculadas e um grande número de relações entre as tabelas.

A tabela principal em uma relação um-para-muitos (a tabela no lado "um" da equação) pode ter sua propriedade Nome da subfolha de dados definida como [Nenhum], nesse caso as subfolhas de dados não são exibidas. Ou sua propriedade Nome da subfolha de dados pode ser definida como o nome de uma tabela relacionada específica ou como [Auto]. Se a propriedade estiver definida como [Auto], você poderá selecionar a tabela relacionada cujos registros que você deseja ver ao clicar no indicador expandir de um registro na tabela principal. Ao definir a propriedade como [Auto], isso pode reduzir o desempenho notavelmente, particularmente em computadores antigos, quando o banco de dados usa um grande número de tabelas vinculadas. Esse comportamento não ocorre quando todas as tabelas estão presentes no mesmo banco de dados.

Como o problema é o desempenho lento, fatores como velocidade do processador e recursos de sistema disponíveis podem fazer com que um banco de dados com desempenho adequado em um computador tenha o desempenho mais lento em outro computador.

A Microsoft fornece exemplos de programação apenas por questões ilustrativas, sem garantias expressas ou implícitas. Isto inclui, mas não está limitado a garantias implícitas de comercialização ou adequação a um determinado propósito. Este artigo pressupõe que você conhece a linguagem de programação demonstrada e também as ferramentas usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudá-lo, fornecendo a explicação da funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para fornecer funcionalidades adicionais ou construir procedimentos específicos para atender às suas necessidades específicas.

Propriedades

ID do artigo: 275085 - Última revisão: sexta-feira, 25 de janeiro de 2008 - Revisão: 10.1
A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbbug kbperformance kbnofix KB275085

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com