Så här löser du referensproblem i en Access-databas

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Ursprungligt KB-nummer:   310803

Sammanfattning

I den här artikeln beskrivs problem som rör användningen av referenser i en Access-databas.

Om du vill förstå referensfel måste du förstå både hur bibliotek refereras i en Access-databas och vad som krävs för att installera en databas på en måldator utan att bryta referenserna. Den här artikeln är en sammanfattning av följande avsnitt:

  • Visa Access-databasreferenser
  • Lösa Microsoft Visual Basic for Applications referenser i Access
  • Förstå referensfelmeddelanden
  • Lösa referensproblem på utvecklingsdatorn
  • Distribuera databasfiler
  • Uppdatera referenslistan
  • Distribuera databasfiler som ActiveX kontroller
  • Registrera en fil på nytt

Visa Access-databasreferenser

Så här visar du aktuella databasreferenser:

  1. Öppna databasen.
  2. Tryck på ALT+F11 för att Visual Basic Editor.
  3. Klicka på ReferenserVerktyg-menyn.

Lösa Visual Basic i Access

Den relevanta filen läses in (till exempel ett typbibliotek, ett objektbibliotek eller ett kontrollbibliotek) för varje referens, enligt den information som visas i rutan Referenser. Om Access inte kan hitta filen kör Access följande procedurer för att hitta filen:

  1. Access kontrollerar om den refererade filen för närvarande läses in i minnet.
  2. Om filen inte läses in i minnet försöker Access verifiera att RefLibPaths registernyckeln finns. Om nyckeln finns söker Access efter ett namngivet värde som har samma namn som referensen. Om det finns en matchning läses referensen in från sökvägen som det namngivna värdet pekar på.
  3. Access söker sedan efter den refererade filen på följande platser, i den här ordningen:
    1. Programmappen (platsen för den Msaccess.exe filen).
    2. Den aktuella mappen som visas om du klickar på ÖppnaArkiv-menyn.
    3. Den Windows eller Winnt-mapp där operativsystemets filer körs.
    4. Mappen System under Windows eller Winnt.
    5. Mapparna i PATH-miljövariabeln som är direkt tillgängliga i operativsystemet.
  4. Om det inte går att hitta filen, uppstår ett referensfel.

Förstå referensfelmeddelanden

Det finns flera felmeddelanden som gäller en saknad fil eller till en fil som har en annan version än den version som används i databasen. I de flesta fall kan du söka i Microsoft Knowledge Base efter en artikel om det specifika felmeddelandet och sedan lösa felet genom att följa stegen i artikeln. I vissa fall matchas en beroendefil inte korrekt med den primära filen.

I följande lista beskrivs några av de felmeddelanden om referens som kan visas. Observera dock att listan inte innehåller alla möjliga referensfelmeddelanden.

  • "Method MethodName of Object ObjectName Failed"

    Vanligtvis kan du få det här felmeddelandet om det är problem med ett programmeringstypbibliotek, till exempel en ogiltig DAO-fil (Data Access Object) DLL-fil (Dynamic-Link Library). Du kan söka i Microsoft Knowledge Base efter artiklar som beskriver de olika formerna av det här felmeddelandet.

  • "Funktionen är inte tillgänglig i användningsuttryck"

    Det här felmeddelandet kan visas om det är problem med ett programmeringstypbibliotek eller om koden inte specifikt anropar rätt bibliotek och filen anges med lägre prioritet i referenslistan än en fil som innehåller samma funktionsnamn , till exempel om DAO-kod används med ActiveX Data Object (ADO) som anges med högre prioritet än DAO-biblioteket. Du kan också få det här felmeddelandet om ett formulär eller en rapport innehåller ActiveX kontroll.

  • "Kan inte hitta projekt eller bibliotek"

    Det här felmeddelandet kan visas om Access inte hittar en fil i referenslistan. Ofta är filen flaggad somMissingin theReferencesdialogrutan. Ibland finns filen på utvecklingsdatorn men inte på måldatorn.

  • "Variabeln är inte definierad" eller "Användardefinierad typ inte definierad"

    Du kan få något av dessa felmeddelanden om du använder säkerhetsguiden för User-Level för att skydda en databas som refererar till andra bibliotek än de bibliotek som ingår som standard. Exempelvis skapas inte referenser till bibliotek som fanns i den oskyddade databasen automatiskt i den nya, skyddade databasen.

  • "Körningsfel 5," "Ogiltigt proceduranrop eller -argument", "Biblioteket som innehåller den här symbolen refereras inte till av det aktuella projektet" eller "Biblioteket som innehåller den här symbolen refereras inte till av det aktuella projektet, så symbolen är odefinierad"

    Du kan få ett av dessa felmeddelanden om det finns en referens till en databas, ett typbibliotek eller ett objektbibliotek som är flaggat somMissing.

  • "ActiveX-komponenten kan inte skapa objekt"

    Det här felmeddelandet innebär inte nödvändigtvis att ActiveX kontroll ingår. En möjlig orsak är till exempel att DAO, som är en ActiveX-komponent, inte kan skapa ett objekt eftersom DAO Automation Server inte kan starta. Orsaken är ofta att DLL-filer som tillhandahåller referensfunktioner för programmet inte är registrerade eller felaktigt registrerade.

Lösa referensproblem på utvecklingsdatorn

Om du skapar en ny, tom databas och sedan importerar objekt från en annan databasfil kan du skapa referensproblem om koden eller ActiveX-kontrollerna förlitar sig på referenser som inte ingår i en databas som standard. Standardreferenserna för en Access 2000-databas är:

  • Visual Basic for Applications
  • Microsoft Access 9.0-objektbibliotek
  • OLE-automation
  • Microsoft ActiveX Data objects (ADO) 2.1-bibliotek

Om källan är en annan Access 2000-databas kontrollerar du att referenserna matchar. Om källan finns i en tidigare version av Access används förmodligen DAO 3.5 eller tidigare. Access 2000 tillhandahåller dock inte DAO 3.5 som standard. Försök att ta bort referensen till ADO 2.1-biblioteket (om det finns det) och lägga till referensen till DAO 3.6-objektbiblioteket.

Om du har konverterat databasen från en tidigare version av Access, och databasen innehåller en referens till Utility.mda-filen, kan du i de flesta fall ta bort referensen eftersom de funktioner som referensanropen ingår i standardreferenserna i Access 2000. Om det finns referenser till tidigare versioner av DAO kan du också ta bort referenserna eftersom DAO 3.6 kan hantera de här funktionerna.

Så här lägger du till en referens till ett bibliotek:

  1. Öppna databasen.
  2. Tryck på ALT+F11 för att Visual Basic Editor.
  3. Klicka på ReferenserVerktyg-menyn.
  4. Markera kryssrutan bredvid namnet på biblioteket under Tillgängliga referenser och klicka sedan på OK.

Så här tar du bort en referens till ett bibliotek:

  1. Öppna databasen.
  2. Tryck på ALT+F11 för att Visual Basic Editor.
  3. Klicka på ReferenserVerktyg-menyn.
  4. Avmarkera kryssrutan bredvid namnet på biblioteket under Tillgängliga referenser och klicka sedan på OK.

Distribuera databasfiler

Det finns två grundläggande metoder för databasfildistribution. Du kan kopiera filen från utvecklingsdatorn till måldatorn, eller så kan du använda paket- och distributionsguiden för att skapa ett installationspaket.

Om du kopierar filen från utvecklingsdatorn till måldatorn kopieras bara databasfilen. Du måste manuellt se till att alla filer som listas i referenslistan är tillgängliga, på rätt versionsnivå och på samma relativa plats på måldatorn som på utvecklingsdatorn.

När du utvecklar körningsprogram i Access måste du vara medveten om att vissa operativsystemfiler måste distribueras med programmet för körning. Paketeringen av filerna utförs automatiskt av komponenten i Paket- och distributionsguiden i Microsoft Office 2000 Developer. Ibland beror de versioner av filerna som ingår på andra program som är installerade på utvecklingsdatorn och som kan ha ändrat operativsystemets filer.

Genom att följa vissa riktlinjer säkerställer du vanligtvis att de versioner av filerna som du använder inte står i konflikt med filer på måldatorn när du installerar körningsprogrammet. Här är riktlinjerna:

  1. Utveckla Access-databasen på valfri dator.
  2. Skapa en datormiljö där hårddisken har formaterats och där endast den tidigaste versionen av operativsystemet, Office och av Office 2000 Developer har installerats. Kör paket- och distributionsguiden på den här datorn för att skapa den körningsversion av programmet. Detta säkerställer att revisionsnivåer för filerna fungerar på alla måldatorer.
  3. Skapa en datormiljö där hårddisken har formateras om och där endast operativsystemet är installerat. Testa körningsprogrammet i den här miljön.
    • Om programmet inte kan köras vet du att det är något fel med själva programmet. Du måste identifiera och korrigera problemet innan du distribuerar programmet.
    • Om programmet fungerar på testdatorn men inte fungerar på måldatorn vet du att det är något fel på måldatorn i stället för i programmet. Du måste identifiera och korrigera den troliga orsaken på måldatorn, förmodligen en inkompatibilitet eller en skadad fil.

Uppdatera referenslistan

Om referensproblemet uppstår vid ActiveX referenskontrollen kan du ibland lösa problemet genom att uppdatera referenslistan. Så här uppdaterar du referenslistan:

  1. I Visual Basic Editor klickar du på Referensermenyn Verktyg.
  2. I dialogrutan Referenser klickar du för att markera en referens som inte redan är markerad, noterar vilken du väljer och klickar sedan på OK.
  3. Klicka på Referenser igen på Verktyg-menyn.
  4. Klicka för att avbryta markeringen av referensen och klicka sedan på OK.

Distribuera databasfiler som har ActiveX kontroller

Det finns två typer av ActiveX för kontroller: designtid och körningslicens.

  • En designtidslicens tillåter att du infogar licensierade ActiveX från Office 2000 Developer i formulär och rapporter i en Access-databas.
  • En licens för körning tillåter att du använder ActiveX-kontroller i en Access-databas på en dator som inte har Office 2000 Developer installerat, men en körningslicens tillåter inte att du infogar nya licensierade ActiveX-kontroller. För att installera en körningslicens distribuerar du ActiveX-kontrollerna med hjälp av paket- och distributionsguiden, som skriver licensen för kontrollerna i måldatorns register.

En saknad flagga, som kan visas när du öppnar en modul i designvyn och sedan klickar på Referenser på menyn Verktyg, anger att referensen till kontrollen Gemensam dialogruta på måldatorn inte matchar källan i databasfilen från utvecklingsdatorn.

Om du distribuerar en databasfil utan att installera den distributable Common Dialog control kan kontrollens referens flaggas som Saknas eller så kan du få ett felmeddelande om att du inte har den licens som krävs för att använda den här ActiveX-kontrollen om den icke-distributablea kontrollen redan är installerad på måldatorn.

Även om databasfilen är en del av ett körningsprogram kan du få felmeddelandet "Du har inte den licens som krävs för att använda den här ActiveX-kontrollen" om den icke-disiterbara kontrollen som redan är installerad på måldatorn är av en senare version än den kontroll som tillhandahålls av körningsprogrammet. Det här problemet kan uppstå eftersom installationsprogrammet inte skriver över senare versioner av en fil med en tidigare version av samma fil.

Registrera en fil på nytt

Det är möjligt att en fil finns i referenslistan utan att registreras korrekt i registret. Om du misstänker att så är fallet bör du följa de här anvisningarna för att registrera filen på ny tid:

  1. I Microsoft Windows NT 4.0 klickar du påStart, pekar på Sök och klickar sedan på Filer eller mappar. I Windows 2000 klickar du påStart, pekar på Sök och klickar sedan på För filer och mappar.
  2. I rutan Namngivet, eller i rutan Sök efter filer och mappar, skriver du in regsvr32.exe.
  3. Klicka på hårddiskens rot i rutan Leta i (vanligtvis C:).
  4. Markera kryssrutan Inkludera undermappar genom att klicka på den om den inte redan är markerad och klicka sedan på Sök nu eller Sök nu.
  5. När du har hittat filen klickar du på Start, på Kör och tar sedan bort allt som finns i rutan Öppna.
  6. Dra Regsvr32.exe filen från sökresultatfönstret till rutan Öppna.
  7. Upprepa steg 2 till 6, den här gången efter FileName.dll, där Filnamn är namnet på filen som du vill registrera igen.
  8. När filen FileName.dll i rutan Öppna med filen Regsvr32.exe på OK.
  9. Testa om problemet finns kvar i Access.

Om du inte har filen Regsvr32.exe på datorn kan du söka efter filen på andra datorer. Om filen inte är tillgänglig kan du hämta filen från Microsofts webbplats.

Anteckning

Kom ihåg att sammanställa alla moduler när du justerat referenserna. Om du vill kompilera alla moduler och modulen fortfarande är öppen klickar du på Kompileringsdatabas på menyn Felsökning. Om modulerna inte kompileras kan det finnas ytterligare omatchade referenser.