Du kan holde dine Microsoft Access-databaser organiserede og administrerbare ved jævnligt at arkivere gamle eller inaktive data. Du kan arkivere alle tabellerne i en database, bestemte tabeller eller kun bestemte poster – f.eks. poster, der er ældre end en bestemt dato. I dette emne forklares det, hvordan du bruger tre forskellige muligheder til at arkivere dataene i din Access-database.
Denne artikel indeholder
- Hvornår skal du overveje arkivering?
- Udskifte en tabel med jævne mellemrum
- Udskift alle tabeller med jævne mellemrum
- Flyt jævnligt poster til en arkivtabel
Hvornår skal du overveje arkivering?
Når en database på din computer indeholder data, du ikke længere vil bruge, men du vil have disse data ved hånden, hvis du skulle få brug for dem på et tidspunkt, eller for at overholde en dataopbevaringspolitik, er arkivering en god måde at bevare sådanne data på. Arkivering bruges også ofte til at bevare data baseret på en datobetingelse, f.eks. i slutningen af en måned.
Måder at arkivere data på
I følgende tabel vises metoder til arkivering af data, en beskrivelse af metoden, en forklaring af, hvornår du skal bruge hver metode og andre specifikke overvejelser i forbindelse med metoden.
| Fremgangsmåde | Beskrivelse | Bruges, når... | Andre overvejelser |
|---|---|---|---|
| Udskifte en tabel med jævne mellemrum | opretter med jævne mellemrum en arkivkopi af en bestemt tabel og erstatter den pågældende tabel med en ny, tom tabelkopi. | Alle poster i en tabel opfylder de betingelser, du bruger til at afgøre, om den skal arkiveres. EKSEMPEL: Du har en tabel, der gemmer ekstreme daglige temperaturer. Hvert år arkiverer du tabellen og starter forfra med en tom tabel. |
|
| Udskift alle tabeller med jævne mellemrum | Opret med jævne mellemrum en arkivkopi af back end-databasen, og erstat derefter back end-databasen med en ny, tom en. Kræver en opdelt database (en database, der består af en back end-databasefil, der indeholder alle tabellerne, og en front end-databasefil, der indeholder alle de andre databaseobjekter). | Alle poster i de fleste tabeller i en database opfylder den betingelse, du bruger til at bestemme, om den skal arkiveres. EKSEMPEL: Din database består af flere tabeller med forskellige typer meteorologiske data. Du arkiverer alle tabellerne hvert år. |
|
| Flyt jævnligt poster til en arkivtabel | Kører med jævne mellemrum en forespørgsel, der vælger de pågældende poster til arkivering og føjer data til en arkivtabel, og du kører derefter en forespørgsel for at vælge de samme poster (fra den oprindelige tabel) og slette dem. | Nogle af posterne i en tabel opfylder den betingelse, du bruger til at afgøre, om der skal arkiveres. EKSEMPEL: Du vil arkivere bibliotekstransaktioner (udtjekninger), hvis datoen for indtjekning er mindst et år gammel. |
Advarsel: Hvis du skal bruge parametre i dine forespørgsler, skal du oprette en formular til at håndtere parametrene. Ellers risikerer du tab af data. |
Arbejde uden om referentiel integritet
Hvis de poster, du vil arkivere, er relateret til poster i andre tabeller, skal du muligvis arbejde uden om relationen. Hvis de poster, du vil arkivere, er "underordnede" poster (de hører til "mange"-siden af en en til mange-relation), kan du sandsynligvis trygt arkivere dem uden bekymringer. Hvis de poster, du vil arkivere, er "overordnede" poster (de hører til "en"-siden af en en til mange-relation), kan deres relaterede "underordnede" poster, når du arkiverer dem:
- Forhindre dig i at slette de "overordnede" poster. Dette kan medføre problemer, hvis du allerede har føjet de "overordnede" poster til arkivtabellen.
- Eller -
- Blive "forældreløse" – optegnelser, der tilhører en "forælder", der ikke eksisterer. Dette kan medføre problemer med dataintegriteten og funktionaliteten i din database, der anvender de "" poster.
Hvis du vil tage højde for referentiel integritet, skal du benytte følgende fremgangsmåde:
Afgør, hvilke "underordnede" poster der hører til de poster, du vil arkivere. Hvis du f.eks. vil arkivere poster for aktiver, der er udlånt på et bibliotek, skal du først afgøre, om der er åbne transaktioner på disse aktiver, dvs. om aktiverne er blevet tjekket ud, men ikke returneret.
Gør et af følgende:
- Hvis de "underordnede" poster altid kan slettes sikkert, skal du kontrollere, at relationen gennemtvinger referentiel integritet med overlappende sletninger. Dette sikrer, at alle relaterede "underordnede" poster slettes.
- Hvis de "underordnede" poster ikke altid kan slettes sikkert, bør du overveje at arkivere alle tabellerne i databasen.
- Opret en forespørgsel, der vælger de "overordnede" poster, der ikke har "underordnede" poster. Derefter skal du bruge den første forespørgsel til at oprette dine arkivforespørgsler (se afsnittet Jævnligt flytte poster til en arkivtabel) i stedet for at bruge den "overordnede" tabel.
Udskifte en tabel med jævne mellemrum
Hvis du vil arkivere alle dataene i en tabel, kan du med jævne mellemrum erstatte tabellen med en tom kopi.
Vigtig
Hvis den tabel, du arkiverer, er relateret til andre tabeller, skal du muligvis arbejde uden om referentiel integritet.
Markér de tabeller, du vil arkivere, i navigationsruden, tryk på CTRL+C, og tryk derefter på CTRL+V.
Vælg Kun struktur under Indstillinger for Sæt ind i dialogboksen Indsæt som , og klik derefter på OK.
Access navngiver kopien som en kopi af det oprindelige tabelnavn.
Højreklik på den oprindelige tabel i navigationsruden, og klik derefter på Omdøb i genvejsmenuen.
Giv tabellen et andet navn for at angive, hvad den indeholder, f.eks. "DailyTemperatureExtremes_archive_2019".
Højreklik på den tomme kopi i navigationsruden, og klik derefter på Omdøb i genvejsmenuen. Omdøb den med navnet på den oprindelige tabel.
Udskift alle tabeller med jævne mellemrum
Hvis du bruger en opdelt database, kan du periodisk erstatte alle tabeller ved at erstatte back end-databasen med en tom kopi.
Hvis du vil gøre dette, skal du først forberede den tomme kopi. Medmindre databasens design ændres, kan du genbruge denne tomme kopi, hver gang du arkiverer. Hvis du vil arkivere, skal du blot omdøbe den eksisterende back end-database for at angive, at det er et arkiv, og gemme den tomme kopi som den nye back end-database.
Forberede en tom kopi af en back end-database
Først skal du importere tabeldefinitionerne for alle tabellerne i back end-databasen.
- Klik på Ny under fanen Filer, vælg Tom database, og klik derefter på Opret.
- Luk Tabel1.
- Klik på Access i gruppen Importér & sammenkæd under fanen Eksterne data.
- I dialogboksen Hent eksterne data – Access-database skal du vælge Importer tabeller, forespørgsler, formularer, rapporter, makroer og moduler til den aktuelle database, og derefter skal du klikke på Gennemse.
- Vælg back end-databasen i dialogboksen Åbn fil. Klik på Åbn for at lukke dialogboksen Åbn fil, og klik derefter på OK.
- Klik på Indstillinger i dialogboksen Importér objekter.
- Under Importér tabeller skal du vælge Kun definition.
- Klik på Markér alt under fanen Tabeller, klik på OK, og klik derefter på Luk.
Føje data til eventuelle opslagstabeller i den tomme kopi
For hver opslagstabel skal du udføre følgende trin:
- Opret en kæde til opslagstabellen i den eksisterende back end-database.
- Oprette en tilføjelsesforespørgsel, der tilføjer alle poster fra den oprindelige i kopien.
Erstatte back end-databasen med en tom kopi
Først skal du omdøbe den eksisterende back end-database for at angive, at den nu er et arkiv. Åbn derefter den tomme kopi, og gem den ved hjælp af det oprindelige back end-databasenavn.
- Klik på fanen Filer , og klik derefter på Gem database som. Du bliver muligvis bedt om at lukke alle åbne objekter. Hvis det er tilfældet, skal du klikke på OK. Dialogboksen Gem som åbnes.
- I feltet Gem i (øverst i dialogboksen Gem som ) skal du sikre dig, at du gemmer filen på samme sted som den oprindelige back end-database.
- Skriv navnet på den oprindelige back end-database i feltet Filnavn .
- I feltet Filtype skal du vælge Access-database (*.accdb).
Flyt jævnligt poster til en arkivtabel
Dette er en proces i fire trin, som kræver, at du opretter en tom kopi af den tabel, der indeholder de poster, du vil arkivere, opretter en tilføjelsesforespørgsel for at kopiere posterne fra den oprindelige tabel til arkivtabellen, opretter en sletteforespørgsel for at fjerne de arkiverede poster fra den oprindelige tabel og til sidst opretter en makro til at køre begge forespørgsler, der kan køres, når du vil arkivere. Denne tilsyneladende komplekse proces kan være nem, hvis du følger trinnene i den rækkefølge, de vises nedenfor:
Trin 2: Oprette en tilføjelsesforespørgsel for at kopiere data til arkivtabellen
Trin 3: Opret en sletteforespørgsel for at fjerne data fra den oprindelige tabel
Trin 4: Opret en makro til at køre både tilføjelses- og sletteforespørgsler
Trin 1: Oprette en arkivtabel
Hvis du vil opbevare alle dine arkiverede poster i én tabel, skal du udføre dette trin én gang. Den arkivtabel, du opretter i dette trin, indeholder alle dine arkiverede poster.
Hvis du vil slette din gamle arkivtabel, når du opretter en ny, kan du i stedet for at udføre dette trin bruge en tabeloprettelsesforespørgsel til at kopiere dataene til arkivtabellen. For at gøre dette skal du gå til trin 2.
Hvis du vil bruge en ny arkivtabel, hver gang du arkiverer, men også bevare dine gamle arkivtabeller, skal du omdøbe den gamle arkivtabel, før du opretter en ny. Hvis du arkiverer baseret på en dato, skal du overveje at navngive dine gamle arkivtabeller ud fra det datointerval, de repræsenterer.
- I navigationsruden skal du vælge den tabel, der indeholder poster at arkivere, trykke på Ctrl+C og derefter trykke på Ctrl+V.
- I feltet Tabelnavn skal du slette ordene Kopiér af og tilføje et understregningstegn og ordet "arkiv" til det eksisterende tabelnavn og derefter klikke på OK. Hvis den oprindelige tabel f.eks. hedder Transaktioner , kaldes arkivtabellen Transactions_archive.
- I dialogboksen Indsæt tabel som under Indstillinger for Sæt ind skal du vælge Kun struktur.
Trin 2: Oprette en tilføjelsesforespørgsel for at kopiere data til arkivtabellen
Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.
Tilføj tabellen med de poster, du vil arkivere.
I forespørgselsdesignvinduet skal du dobbeltklikke på stjernen (*) i den tabel, du lige har tilføjet. Tabelnavnet og en stjerne vises i første kolonne i forespørgselsgitteret.
Bemærk
Stjernen angiver, at forespørgslen skal medtage alle felterne fra tabellen i forespørgselsresultatet. Når du bruger stjernen, og felter tilføjes eller fjernes fra tabellen, justeres forespørgslens output tilsvarende.
Dobbeltklik på det felt, du vil bruge til at angive en betingelse, som poster skal opfylde, før du arkiverer dem, i forespørgselsdesignvinduet. Hvis tabellen Transaktioner f.eks. har et felt med navnet Dato for indtjekket indtjekning, og du vil arkivere alle poster, hvor datoen er mere end et år gammel, skal du dobbeltklikke på feltet, så vises det i den næste tomme kolonne i forespørgselsgitteret.
Gentag dette trin, hvis du vil bruge kriterier med yderligere felter.Brug rækken Kriterier til at angive kriterier for de felter, du lige har tilføjet. Du kan f.eks. angive, at datoen for indtjekket indtjekning skal være tidligere end d. 1. januar 2019 ved hjælp af udtrykket <#01-01-2019# i rækken Kriterier .
Hvis dine kriterieværdier ændres, hver gang du arkiverer, skal du få forespørgslen til at bede om input. Det kan du gøre ved at bruge en parameter i rækken Kriterier , så forespørgslen beder om input. Brug et udtryk, som du normalt ville gøre, for at bruge en parameter, men i stedet for en bestemt værdi kan du bruge et kort spørgsmål i kantede parenteser. Du kan f.eks. bruge udtrykket <[Arkiv transaktioner fuldført før:] således:
Du kan finde flere oplysninger om brug af parametre i artiklen Introduktion til forespørgsler.
Du kan også bruge rækken eller til at angive alternative betingelser. Du kan finde flere oplysninger om brug af kriterier i artiklen Eksempler på forespørgselskriterier.Tip
Hvis du bruger et datofelt til at angive kriterier, og du vil arkivere alle poster, der er ældre end dags dato, skal du angive <Date() i rækken Kriterier for datofeltet.
Gør et af følgende:
Hvis du allerede har oprettet arkivtabellen, kan du bruge en tilføjelsesforespørgsel til at føje de angivne poster til den pågældende tabel:- På fanen Design i gruppen Forespørgselstype klikker du Tilføj.
- Vælg navnet på arkivtabellen i feltet Tabelnavn i dialogboksen Tilføj, og klik derefter på OK.
Rækken Tilføj til vises i forespørgselsdesigngitteret. - Fjern markeringen i rækken Tilføj til for alle felter, du har brugt til at angive kriterier. Det er kun stjernen, der har en værdi for Tilføj til.
Hvis du ikke har oprettet arkivtabellen, kan du bruge en tabeloprettelsesforespørgsel til at oprette arkivtabellen ved hjælp af de angivne poster: - Klik på Tabeloprettelse i gruppen Forespørgselstype under fanen Design.
- Skriv navnet på arkivtabellen i feltet Tabelnavn i dialogboksen tabeloprettelsesfelt, og klik derefter på OK.
Tryk på Ctrl+S for at gemme forespørgslen.
Trin 3: Opret en sletteforespørgsel for at fjerne data fra den oprindelige tabel
Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.
Tilføj tabellen med de poster, du vil arkivere.
I forespørgselsdesignvinduet skal du dobbeltklikke på stjernen (*) i den tabel, du lige har tilføjet. Tabelnavnet og en stjerne vises i første kolonne i forespørgselsgitteret.
Dobbeltklik på de felter, du brugte til at angive en betingelse i tilføjelsesforespørgslen, i forespørgselsdesignvinduet.
Brug rækken Kriterier til at angive kriterier for de felter, du lige har tilføjet. Du kan finde flere oplysninger om brug af kriterier i artiklen Eksempler på forespørgselskriterier.
Vigtig
Hvis tilføjelses- eller tabeloprettelsesforespørgslen brugte en parameter, skal du sikre dig, at sletteforespørgslen også gør det. Husk også, at du angiver den samme værdi for begge forespørgsler. Hvis du angiver andre parameterværdier, kan du miste data. For at forhindre tab af data kan du overveje at bruge en formular til at indsamle værdierne og få forespørgslerne til at bede formularen om inputværdierne. Du kan finde flere oplysninger i artiklen Introduktion til forespørgsler.
Klik på Slet i gruppen Forespørgselstype under fanen Design.
Rækken Slet vises i forespørgselsgitteret.
Tryk på Ctrl+S for at gemme forespørgslen.
Trin 4: Opret en makro til at køre både tilføjelses- og sletteforespørgsler
- Klik på Makro i gruppen Makroer og kode på fanen Opret.
- Klik på rullepilen ud for Tilføj ny handling, og klik derefter på OpenQuery.
Handlingen OpenQuery vises og viser argumenterne. - I feltet Forespørgselsnavn skal du vælge den forespørgsel (tilføjelse eller tabeloprettelse), du oprettede i trin 2.
- Klik på rullepilen ud for Tilføj ny handling, og klik derefter på OpenQuery.
Handlingen OpenQuery vises og viser argumenterne. - I feltet Forespørgselsnavn skal du vælge den sletteforespørgsel, du oprettede i trin 3.
- Tryk på CTRL+S for at gemme makroen.
Afspil makroen, når du vil arkivere poster.