Tragere prestaties in Access zijn gebaseerd of Jet database-programma's na een upgrade van Windows NT 4.0 naar Windows 2000 of Windows XP

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 891176 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Symptomen

Nadat u een upgrade van Windows NT kan 4.0 naar Microsoft Windows 2000 of Microsoft Windows XP Professional tragere prestaties in Microsoft Access gebaseerd of Jet-database is gebaseerd programma's.

Oorzaak

Dit probleem kan optreden als een of meer van de volgende voorwaarden is voldaan:
  • U werkt met een gesplitste database en de backend databasebestand zich bevindt in een map met een naam langer is dan 8 tekens. Voor bijvoorbeeld de backend-databasebestand zich bevindt in een map met een naam die is de volgende strekking:
    BigFolderName
  • U werkt met een gesplitste database en de naam van de backend-databasebestand langer is dan 8 tekens met uitzondering van de extensie van drie tekens .mdb. Bijvoorbeeld de backend-database bestand heeft een naam die lijkt op het volgende:
    BigDatabaseFileName.mdb
  • Werken met een database die is gesplitst, en de naam van het bestand voldoet niet aan de naamgevingsconventie 8.3. Of de database is opgeslagen in een map een lange naam heeft.
Caching ontwerp van de Workstation-service Windows 2000 en latere versies van Windows verschilt van de cache ontwerp van de Workstation-service in eerdere versies van Windows.

In Windows 2000 en latere versies van Windows is naar voorkeur caching ontwerp van de Workstation-service gewijzigd de integriteit van de database in een omgeving. Dit ontwerp wijzigen veroorzaakt een vertraging wanneer Jet API-aanroepen naar informatie over de lange map ophalen naam of over de lange bestandsnaam.Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
889588Optimaliseren Office Access en Jet database engine netwerk met Windows 2000 en Windows XP-clients

Oplossing

Microsoft biedt programming voorbeelden ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal wordt aangetoond en de hulpmiddelen maken en procedures voor foutopsporing worden gebruikt. Ondersteuningstechnici van Microsoft kunnen de functionaliteit van een bepaalde procedure uitgelegd, maar niet passen deze voorbeelden om functionaliteit toegevoegd of procedures uw specifieke behoeften te maken.

Als u werkt een database splitsen kunt u dit probleem oplossen door uw bestaande Jet tabellen opnieuw koppelen. Hiertoe maakt u code verzenden een korte voorstelling van de lange naam voor de Windows API. Dit resolutie vereist de backend-database naam volgt de 8.3-namen. Deze code maakt volgt in de front-end database:
  1. Een verwijzing instellen naar Microsoft ADO 2.5 Ext (of een latere versie van ADO).
  2. De volgende code toevoegen aan een nieuwe module.
    Declare Function GetShortPathName Lib "kernel32" _
                Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
               ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
    
    Function RefreshLinks()
        On Error GoTo ErrorHandler
        
        'Define the ADOX Catalog object.
        Dim objCat As New ADOX.Catalog 
        'Define the ADOX Table object.
        Dim objTbl As ADOX.Table 
    
        'Database name of the linked table.
        Dim strFilename As String 
        'Path and database name of the linked table.
        Dim strFullName As String 
    
        Dim blnIsMapi As Boolean
        Dim blnIsImex As Boolean
        Dim blnIsTemp As Boolean
        Dim blnLongFileName As Boolean
        Dim blnFailedLink As Boolean
        Const srtImex = "IMEX"
        Const strMapi = "MAPILEVEL="
    
        'Open the catalog.
        objCat.ActiveConnection = CurrentProject.Connection
    
        'Loop through the table collection and update the linked tables.
        For Each objTbl In objCat.Tables
            'Verify that the table is a linked table.
            If objTbl.Type = "LINK" = True Then
                blnIsTemp = objTbl.Properties("Temporary Table") Or Left(objTbl.Name, 1) = "~"
                blnIsImex = (InStr(1, objTbl.Properties("Jet OLEDB:Link Provider String"), srtImex, vbTextCompare) > 0)
                blnIsMapi = (InStr(1, objTbl.Properties("Jet OLEDB:Link Provider String"), strMapi, vbTextCompare) > 0)
    
                If Not blnIsTemp And Not blnIsImex And Not blnIsMapi Then  
                    'Verify that the table is a Jet table.
                    strFullName = objTbl.Properties("Jet OLEDB:Link Datasource")
                    strFilename = Mid(strFullName, InStrRev(strFullName, "\", _
                                Len(strFullName)) + 1, Len(strFullName))
                    'Determine whether the database exists.
                    If DoesFileExist(strFullName) = True Then
                        objTbl.Properties("Jet OLEDB:Link Datasource") = GetShortName(strFullName)  
                    'Update the link by using the short path name.
                    Else
                        MsgBox "Cannot update: '" & objTbl.Name & "'" & String(2, vbCrLf) & "File not found: " & vbCrLf & strFullName
                        blnFailedLink = True
                    End If
                    If InStr(strFilename, ".") > 9 Then blnLongFileName = True
                End If
            End If
        Next
       
        If blnFailedLink = False Then
            If blnLongFileName = True Then
                MsgBox "The table links were successfully updated, but the name of the backend database file does not follow 8.3" & _
                vbCrLf & "Please rename the file, relink the tables, and then run the procedure again.", vbExclamation
            Else
                MsgBox "The links were successfully updated!!! ", vbInformation
            End If
        Else
            MsgBox "The links were not successfully updated." & vbCrLf & "Please verify you table links.", vbExclamation
        End If
    
    ExitHandler:
         Exit Function
    
    ErrorHandler:
        MsgBox Err.Description & " " & Err.Number
        Resume ExitHandler
        
    End Function
    Function GetShortName(ByVal sLongFileName As String) As String
               Dim lRetVal As Long, sShortPathName As String, iLen As Integer
               'Set up a buffer area for the API function call return.
               sShortPathName = Space(255)
               iLen = Len(sShortPathName)
        
               'Call the function.
               lRetVal = GetShortPathName(sLongFileName, sShortPathName, iLen)
               'Remove unwanted characters.
               GetShortName = Left(sShortPathName, lRetVal)
     End Function
    
    Function DoesFileExist(strFileSpec As String) As Boolean
        'Return True if the file that is specified in the
        'strFilespec argument exists.
        'Return False if strFileSpec is not a valid
        'file or if strFileSpec is a directory.
        Const INVALID_ARGUMENT As Long = 53
        On Error GoTo DoesfileExist_Err
        If (GetAttr(strFileSpec) And vbDirectory) <> vbDirectory Then
            DoesFileExist = CBool(Len(Dir(strFileSpec)) > 0)
        Else
            DoesFileExist = False
        End If
    DoesfileExist_End:
        Exit Function
    DoesfileExist_Err:
        DoesFileExist = False
        Resume DoesfileExist_End
    End Function
    
  3. Voer deRefreshLinksfunctie. U doet dit als volgt:
    1. Klik in de Visual Basic-EditorOnmiddellijke Vensterop deWeergavemenu.
    2. In de Venster Direct, typeRefreshLinks. Druk op ENTER.
DeRefreshLinksfunctie wordt echter gekoppelde Jet tabellen in een database en controleert of de koppeling geldig is. Als de koppeling geldig is, deze code gebruikt de Windows-API functieGetShortPathNamemaakt een korte naam volgt de naamgevingsconventie 8.3.Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
142982Hoe Windows 8.3-bestandsnamen genereert uit lange bestandsnamen
Deze code werkt vervolgens de koppeling door een pad die bevat nieuwe korte naam. Als de koppeling verwijst naar een backend-database-bestand Volg niet de naamgevingsconventie 8.3, deze code genereert een bericht voorstellen dat u het bestand backend-database wijzigen.

Status

Microsoft heeft bevestigd dat dit probleem in de Microsoft-producten die worden vermeld is in de sectie 'Van toepassing op'.

OpmerkingAls u Windows XP gebruikt, kunt u de prestaties verbeteren door het toepassen van Windows XP Service Pack 2 (SP2).

Meer informatie

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
209862Het koppelen van tabellen backend met common dialog control in Access 2000
175512Een korte bestandsnaam ophalen uit een lange bestandsnaam

Eigenschappen

Artikel ID: 891176 - Laatste beoordeling: zaterdag 17 september 2011 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition op de volgende platformen
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Tablet PC Edition
Trefwoorden: 
kbfilesystems kbenv kbtshoot kbhowto kbinfo kbmt KB891176 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:891176

Geef ons feedback

 

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