Du kan hålla ordning på och hantera dina Microsoft Access-databaser genom att regelbundet arkivera gamla eller inaktiva poster. Du kan arkivera alla tabeller i en databas, vissa tabeller eller endast vissa poster, till exempel poster som är äldre än ett visst datum. I det här avsnittet förklaras hur du använder tre olika alternativ för att arkivera data i en Access-databas.
Artikelinnehåll
- När bör du överväga arkivering?
- Ersätta en tabell med jämna mellanrum
- Ersätta alla tabeller med jämna mellanrum
- Flytta poster till en arkivtabell med jämna mellanrum
När bör du överväga arkivering?
När en databas på datorn innehåller data som du inte planerar att använda längre, men du vill ha dem nära till hands om du ändå behöver dem eller för att uppfylla en databevarandeprincip, är arkivering ett bra sätt att behålla sådana data. Arkivering används också ofta för att behålla data baserat på ett datumvillkor, till exempel i slutet av en månad.
Olika sätt att arkivera data
I följande tabell listas metoder för att arkivera data, en beskrivning av metoden, förklaringar av när du ska använda varje metod och andra specifika överväganden för metoden.
| Gör så här | Beskrivning | Använd när... | Andra överväganden |
|---|---|---|---|
| Ersätta en tabell med jämna mellanrum | Med jämna mellanrum görs en arkivkopia av en viss tabell och ersätts med en ny, tom tabellkopia. | Alla poster i en tabell uppfyller de villkor som du använder för att avgöra om arkivering ska göras. EXEMPEL: Du har en tabell som lagrar dagliga extrema temperaturer. Varje år arkiverar du tabellen och börjar om med en tom tabell. |
|
| Ersätta alla tabeller med jämna mellanrum | Skapa regelbundet en arkivkopia av backend-databasen och byt sedan ut backend-databasen mot en ny, tom databas. Kräver en uppdelad databas (en databas som består av: en databasserverdel som innehåller alla tabeller och en klientdelsdatabasfil som innehåller alla andra databasobjekt). | Alla poster i de flesta av tabellerna i en databas uppfyller villkoret du använder för att avgöra om du ska arkivera. EXEMPEL: Din databas består av flera tabeller med olika typer av meteorologiska data. Varje år arkiverar du alla tabeller. |
|
| Flytta poster till en arkivtabell med jämna mellanrum | Med jämna mellanrum körs en fråga som väljer posterna för arkivering och lägger till data i en arkivtabell, och sedan kör du en fråga för att markera samma poster (från den ursprungliga tabellen) och ta bort dem. | Vissa poster i en tabell uppfyller villkoret som du använder för att avgöra om du ska arkivera. EXEMPEL: Du vill arkivera bibliotekstransaktioner (utcheckningar) om incheckningsdatumet är minst ett år gammalt. |
Varning: Om du behöver använda parametrar i dina frågor bör du skapa ett formulär som hanterar parametrarna. Annars riskerar du dataförlust. |
Kringgå referensintegritet
Om de poster som du vill arkivera är relaterade till poster i andra tabeller kan du behöva kringgå relationen. Om de poster som du vill arkivera är underordnade poster (de tillhör N-sidan i en 1:N-relation) kan du antagligen arkivera dem utan problem. Om de poster som du vill arkivera är "överordnade" poster (de tillhör "en"-sidan i en en-till-många-relation), kan deras relaterade "underordnade" poster när du arkiverar dem:
- Du kan inte ta bort de överordnade posterna. Det kan orsaka problem om du redan har lagt till de överordnade posterna i arkivtabellen.
- Eller -
- Bli "överblivna" – poster som tillhör en "överordnad" som inte finns. Detta kan orsaka problem med dataintegriteten och funktionaliteten i databasen som använder de "överblivna" posterna.
Så här hanterar du referensintegritet:
Bestäm vilka "underordnade" poster som tillhör de poster som du vill arkivera. Om du till exempel vill arkivera poster för tillgångar som lånats ut på ett bibliotek måste du först avgöra om det finns några öppna transaktioner för dessa tillgångar, det vill säga om tillgångarna har checkats ut men inte återlämnats.
Gör något av följande:
- Om de underordnade posterna alltid kan tas bort på ett säkert sätt, kontrollerar du att relationen använder referensintegritet, med sammanhängande borttagningar. Detta säkerställer att alla relaterade underordnade poster tas bort.
- Om de underordnade posterna inte alltid kan tas bort på ett säkert sätt bör du överväga att arkivera alla tabeller i databasen.
- Skapa en fråga som väljer "överordnade" poster som inte har "underordnade" poster. Använd sedan den första frågan till att skapa dina arkivfrågor (se avsnittet Flytta poster regelbundet till en arkivtabell), istället för att använda den "överordnade" tabellen.
Ersätta en tabell med jämna mellanrum
Om du vill arkivera alla data i en tabell kan du regelbundet ersätta tabellen med en tom kopia.
Viktigt!
Om tabellen som du arkiverar är relaterad till andra tabeller kan du behöva kringgå referensintegritet.
Markera de tabeller du vill arkivera i navigeringsfönstret, tryck på CTRL+C och sedan på CTRL+V.
Välj Endast struktur under Inklistringsalternativ i dialogrutan Klistra in tabell som och klicka sedan på OK.
Access namnger kopian som en kopia av det ursprungliga tabellnamnet.
Högerklicka på den ursprungliga tabellen i navigeringsfönstret och klicka sedan på Byt namn på snabbmenyn.
Ge tabellen ett annat namn för att ange vad den innehåller, till exempel "DailyTemperatureExtremes_archive_2019".
Högerklicka på den tomma kopian i navigeringsfönstret och klicka sedan på Byt namn på snabbmenyn. Byt namn på den till den ursprungliga tabellens namn.
Ersätta alla tabeller med jämna mellanrum
Om du använder en uppdelad databas kan du regelbundet ersätta alla tabeller genom att ersätta backend-databasen med en tom kopia.
Om du vill göra det förbereder du först den tomma kopian. Om inte databasens design ändras kan du återanvända den tomma kopian varje gång du arkiverar. Om du vill arkivera byter du namn på den befintliga serverdatabasen för att ange att det är ett arkiv och sparar den tomma kopian som den nya serverdelsdatabasen.
Förbereda en tom kopia av en backend-databas
Importera först tabelldefinitionerna för alla tabeller i backend-databasen.
- Klicka på Ny på fliken Arkiv, välj Tom databas och klicka sedan på Skapa.
- Stäng tabell1.
- Klicka på Access i gruppen Importera & länka på fliken Externadata.
- I dialogrutan Hämta externa data – Access-databas väljer du Importera tabeller, frågor, formulär, rapporter, makron och moduler till den aktuella databasen och klickar sedan på Bläddra.
- Välj backend-databasen i dialogrutan Öppna . Stäng dialogrutan Öppna genom att klicka på Öppna och klicka sedan på OK.
- Klicka på Alternativ i dialogrutan Importera objekt.
- Välj Endast definition under Importera tabeller.
- Klicka på Markera alla på fliken Tabeller, klicka på OK och klicka sedan på Stäng.
Lägga till data i uppslagstabeller i den tomma kopian
Gör följande för varje uppslagstabell:
- Länka till uppslagstabellen i den befintliga serverdelsdatabasen.
- Skapa en tilläggsfråga som lägger till alla poster från originalet i kopian.
Ersätt backend-databasen med en tom kopia
Byt namn på den befintliga serverdelsdatabasen för att ange att det nu är ett arkiv. Öppna sedan den tomma kopian och spara den med hjälp av det ursprungliga namnet på serverdelsdatabasen.
- Klicka på fliken Arkiv och sedan på Spara databas som. Du kanske uppmanas att stänga alla öppna objekt. Klicka i så fall på OK. Dialogrutan Spara som öppnas.
- Kontrollera att du sparar filen på samma plats som den ursprungliga serverdelen i rutan Spara i (högst upp i dialogrutan Spara som ).
- I rutan Filnamn anger du namnet på den ursprungliga serverdelsdatabasen.
- Välj Access-databas (*.accdb) i rutan Filformat.
Flytta poster till en arkivtabell med jämna mellanrum
Det här är en process i fyra steg där du gör en tom kopia av tabellen som innehåller de poster som du vill arkivera, skapar en tilläggsfråga för att kopiera poster från den ursprungliga tabellen till arkivtabellen, skapar en borttagningsfråga för att ta bort de arkiverade posterna från den ursprungliga tabellen och slutligen skapar du ett makro för att köra båda frågorna som kan köras när du vill arkivera. Denna till synes komplexa process kan vara enkel om du följer stegen i den ordning som de presenteras nedan:
Steg 2: Skapa en tilläggsfråga för att kopiera data till arkivtabellen
Steg 3: Skapa en borttagningsfråga för att ta bort data från den ursprungliga tabellen
Steg 4: Skapa ett makro för att köra både lägg till och ta bort frågor
Steg 1: Skapa en arkivtabell
Om du vill ha alla arkiverade poster i en tabell gör du det här steget en gång. Arkivtabellen som du skapar i det här steget kommer att innehålla alla dina arkiverade poster.
Om du vill ta bort den gamla arkivtabellen när du skapar en ny kan du istället för att utföra det här steget använda en tabellfråga för att kopiera data till arkivtabellen. Det gör du genom att gå vidare till steg 2.
Om du vill använda en ny arkiveringstabell varje gång du arkiverar, men även vill behålla dina gamla arkivtabeller, måste du byta namn på den gamla arkivtabellen innan du skapar en ny. Om du arkiverar baserat på ett datum bör du överväga att namnge dina gamla arkivtabeller enligt det datumintervall de representerar.
- Markera den tabell som innehåller de poster som ska arkiveras i navigeringsfönstret, tryck på CTRL+C och tryck sedan på CTRL+V.
- Ta bort orden Kopia av i rutan Tabellnamn och lägg till ett understreck och ordet "arkiv" till det befintliga tabellnamnet och klicka sedan på OK. Om den ursprungliga tabellen heter Transaktioner får arkivtabellen namnet Transactions_archive.
- Välj Endast struktur under Inklistringsalternativ i dialogrutan Klistra in tabell som.
Steg 2: Skapa en tilläggsfråga för att kopiera data till arkivtabellen
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
Lägg till tabellen med de poster som du vill arkivera.
Dubbelklicka på asterisken (*) i tabellen du just lade till i frågedesignfönstret. Tabellnamnet och en asterisk visas i den första kolumnen i frågerutnätet.
Obs
Asterisken anger att frågan ska inkludera alla fält från tabellen i frågeresultatet. När du använder asterisken, om fält läggs till eller tas bort från tabellen, justeras frågeresultatet på motsvarande sätt.
Dubbelklicka i frågedesignfönstret på det fält som du vill använda för att ange ett villkor som posterna ska uppfylla innan de arkiveras. Om tabellen Transaktioner till exempel innehåller ett fält med namnet Incheckat datum och du vill arkivera alla poster där datumet är äldre än ett år dubbelklickar du på fältet, så visas det i nästa tomma kolumn i frågerutnätet.
Upprepa det här steget om du vill använda villkor med ytterligare fält.Med raden Villkor kan du ange villkor för fälten som du just lagt till. Du kan till exempel ange att incheckningsdatumet måste infalla tidigare än 1 januari 2019 med hjälp av uttrycket <#2019-01-01# på raden Villkor .
Om villkorsvärdena ändras varje gång du arkiverar bör du ange att frågan ska be om indata. Det gör du genom att använda en parameter på raden Villkor så att frågan begär indata. Om du vill använda en parameter använder du ett uttryck som vanligt, men i stället för ett angivet värde använder du en kort fråga omgiven av hakparenteser. Du kan till exempel använda uttrycket <[Arkiv transactions completed before:], like so:
Mer information om hur du använder parametrar finns i artikeln Introduktion till frågor.
Du kanske också vill använda raden eller för att ange alternativa villkor. Mer information om hur du använder villkor finns i artikeln Exempel på frågevillkor.Tips
Om du använder ett datumfält för att ange villkor och du vill arkivera alla poster som är äldre än dagens datum, anger <du Datum() på raden Villkor för datumfältet.
Gör något av följande:
Om du redan har skapat arkivtabellen använder du en tilläggsfråga för att lägga till de angivna posterna i tabellen:- Klicka på Lägg till i gruppen Frågetyp på fliken Design.
- Markera namnet på arkivtabellen i rutan Tabellnamn i dialogrutanTilläggsalternativ och klicka sedan på OK.
Raden Tillägg till visas i frågerutnätet. -
Avmarkera raden Tillägg till för alla fält som du har använt för att ange villkor. (Endast asterisken ska ha ett värde för Tilläggsadress.)
Om du inte har skapat arkivtabellen använder du en tabellfråga för att skapa arkivtabellen med hjälp av de angivna posterna: - Klicka på Tabellfråga i gruppen Frågetyp på fliken Design.
- Skriv namnet på arkivtabellen i rutan Tabellnamn i dialogrutan Tabellnamn och klicka sedan på OK.
Spara frågan genom att trycka på CTRL+S.
Steg 3: Skapa en borttagningsfråga för att ta bort data från den ursprungliga tabellen
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
Lägg till tabellen med de poster som du vill arkivera.
Dubbelklicka på asterisken (*) i tabellen du just lade till i frågedesignfönstret. Tabellnamnet och en asterisk visas i den första kolumnen i frågerutnätet.
Dubbelklicka i frågedesignfönstret på samma fält som du använde för att ange ett villkor i tilläggsfrågan.
Med raden Villkor kan du ange villkor för fälten som du just lagt till. Mer information om hur du använder villkor finns i artikeln Exempel på frågevillkor.
Viktigt!
Om tilläggs- eller tabellfrågan använde en parameter kontrollerar du att borttagningsfrågan också gör det. Kom också ihåg att du anger samma värde för båda frågorna. Om du anger andra parametervärden kan du förlora data. För att förhindra dataförlust kan du använda ett formulär för att samla in värdena och låta frågorna fråga formuläret om indatavärden. Mer information finns i artikeln Introduktion till frågor.
Klicka på Ta bort i gruppen Frågetyp på fliken Design.
Raden Ta bort visas i frågerutnätet.
Spara frågan genom att trycka på CTRL+S.
Steg 4: Skapa ett makro för att köra både lägg till och ta bort frågor
- Gå till fliken Skapa, i gruppen Makron och kod, och klicka på Makro.
- Klicka på pilen i listrutan bredvid Lägg till ny instruktion och klicka sedan på ÖppnaFråga.
Instruktionen ÖppnaFråga visas och dess argument visas. - I rutan Frågenamn väljer du den fråga (tilläggs- eller tabellfråga) som du skapade i steg 2.
- Klicka på pilen i listrutan bredvid Lägg till ny instruktion och klicka sedan på ÖppnaFråga.
Instruktionen ÖppnaFråga visas och dess argument visas. - I rutan Frågenamn väljer du borttagningsfrågan som du skapade i steg 3.
- Spara makrot genom att trycka på CTRL+S.
Kör makrot när du vill arkivera poster.