Du kan bruge en relation i Access til at kombinere data fra to forskellige tabeller. Hver relation består af felter i to tabeller med tilsvarende data. Du kan f.eks. både have et felt med produkt-id i en tabel med produkter og en tabel med ordredetaljer. Hver post i tabellen Ordredetaljer har et produkt-id, der svarer til en post i tabellen Produkter med det samme produkt-id.
Når du bruger relaterede tabeller i en forespørgsel, kan Access ved hjælp af relationen afgøre, hvilke poster fra hver tabel der skal kombineres i resultatsættet. En relation kan også forhindre manglende data ved at afholde slettede data fra at blive synkroniseret. Dette kaldes referentiel integritet.
Før du arbejder med relationer, skal du sørge for, at du forstår de grundlæggende begreber. Du kan finde flere oplysninger om tabelrelationer i Vejledning i tabelrelationer og Kom i gang med tabelrelationer.
Denne artikel indeholder
Oversigt
I en Access-database opretter du en tabelrelation ved hjælp af en af de følgende metoder:
-
I vinduet Relationer skal du tilføje de tabeller, du vil oprette relationer mellem, og derefter trække feltet for at relatere dem fra én tabel til den anden tabel.
-
Træk et felt til tabellens dataark fra ruden Feltliste.
Når du opretter en relation mellem tabeller, har de felter, der svarer til hinanden, ofte samme navn, men det er ikke en nødvendighed. De fælles felter skal have samme datatype. Hvis feltet med den primære nøgle er et felt med automatisk nummerering, kan det fremmede nøglefelt dog også være et nummerfelt, hvis Feltstørrelse for begge felter er det samme. Du kan f.eks. matche et felt med automatisk nummerering og et nummerfelt, hvis egenskaben Feltstørrelse for begge felter er et langt heltal. Når begge fælles felter er nummerfelter, skal de have samme indstilling for egenskaben Feltstørrelse.
Opret en tabelrelation ved hjælp af vinduet Relationer
-
Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.
-
Klik på Tilføj tabeller i gruppen Relationer under fanen Relationer.
-
Markér en eller flere tabeller eller forespørgsler, og klik derefter på Tilføj. Når du er færdig med at føje tabeller og forespørgsler til dokumentfanen Relationer, skal du klikke på Luk.
-
Træk et felt (som regel den primære nøgle) fra den ene tabel til det fælles felt (den fremmede nøgle) i den anden tabel. Hvis du vil flytte flere felter, skal du trykke på Ctrl, klikke på de enkelte felter og trække dem.
Brug Rediger relationer vises. -
Kontroller, at de viste feltnavne er de fælles felter for relationen. Hvis et feltnavn er forkert, skal du klikke på navnet og vælge det korrekte felt på listen.Gennemtving referentiel integritet.
Hvis du gennemtvinge referentiel integritet for denne relation, skal du markere afkrydsningsfeltet Gennemtving referentiel integritet. Du kan få mere at vide om referentiel integritet i afsnittet -
Klik på Opret.
Der tegnes en relationslinje mellem de to tabeller. Hvis du har markeret afkrydsningsfeltet Gennemtving referentiel integritet, er linjen tykkere ved enderne. Hvis afkrydsningsfeltet Gennemtving referentiel integritet er markeret, vises desuden tallet 1 på den ene side af relationen over den tykke del af linjen, og uendelighedssymbolet (∞) vises på den anden side ligeledes over den tykke del af linjen, som det vises på den følgende figur.
Bemærkninger!:
-
Sådan oprettes en en til en-relation Begge de fælles felter (som regel felterne med den primære nøgle og den fremmede nøgle) skal have et entydigt indeks. Det betyder, at egenskaben Indekseret skal være indstillet til Ja – ingen dubletter for disse felter. Hvis begge felter har et entydigt indeks, opretter Access en en til en-relation.
-
Sådan oprettes en en til mange-relation Feltet på en-siden (typisk den primære nøgle) skal have et entydigt indeks. Det betyder, at egenskaben Indekseret skal være indstillet til Ja – ingen dubletter for dette felt. Feltet på mange-siden skal ikke have et entydig indeks. Det kan have et indeks, men det skal tillade dubletter. Det betyder, at egenskaben Indekseret skal være indstillet til Nej eller Ja – dubletter tillades for dette felt. Hvis det ene felt har et entydigt indeks, og det andet ikke har, oprettes der en en til mange-relation i Access.
-
Opret en tabelrelation ved at bruge ruden Feltliste til at tilføje et felt
Du kan føje et felt til en eksisterende tabel, der er åben i dataarkvisning, ved at trække det fra ruden Feltliste. I ruden Feltliste vises de felter, der er tilgængelige i relaterede tabeller, og også de felter, der er tilgængelige i andre tabeller i databasen.
Når du trækker et felt fra en "anden" (ikke-relateret) tabel og derefter fuldfører guiden Opslag, oprettes der automatisk en ny en til mange-relation mellem tabellen i ruden Feltliste og den tabel, du trak feltet til. Denne relation, som Access har oprettet, gennemtvinger som standard ikke referentiel integritet. Hvis du vil gennemtvinge referentiel integritet, skal du redigere relationen. Du finder flere oplysninger i afsnittet Rediger en relation.
Åbn en tabel i dataarkvisning
-
Dobbeltklik på tabellen i navigationsruden.
Åbne ruden Feltliste
-
Tryk på Alt+F8. Ruden Feltliste vises.
I ruden Feltliste vises alle de andre tabeller i databasen, og de er inddelt i kategorier. Når du arbejder med en tabel i dataarkvisning, vises felter i den ene af de to kategorier i ruden Feltliste i Access: Tilgængelige felter i relaterede tabeller og Tilgængelige felter i andre tabeller. I den første kategori vises alle de tabeller, der har en relation til den tabel, du aktuelt arbejder med. I den anden kategori vises alle de tabeller, som tabellen ikke har en relation til.
Når du klikker på plustegnet (+) ud for et tabelnavn i ruden Feltliste, vises en liste over alle de felter, der er tilgængelige i denne tabel. Hvis du vil tilføje et felt i tabellen, skal du trække det ønskede felt fra ruden Feltliste til tabellen i dataarkvisning.
Tilføje et felt og oprette en relation i ruden Feltliste
-
Med tabellen åben i dataarkvisning skal du trykke på ALT+F8. Ruden Feltliste vises.
-
Klik på plustegnet (+) ud for et tabelnavn under Tilgængelige felter i andre tabeller for at få vist listen over felterne i denne tabel.
-
Træk det ønskede felt fra ruden Feltliste til den tabel, der er åben i dataarkvisning.
-
Når indsætningslinjen vises, skal du slippe feltet på den ønskede plads.
Guiden Opslag starter.
-
Følg vejledningen på skærmen for at fuldføre Guiden Opslag.
Feltet vises i tabellen i dataarkvisning.
Når du trækker et felt fra en "anden" (ikke-relateret) tabel og derefter fuldfører guiden Opslag, oprettes der automatisk en ny en til mange-relation mellem tabellen i Feltliste og den tabel, du har trukket feltet til. Denne relation, som Access har oprettet, gennemtvinger som standard ikke referentiel integritet. Hvis du vil gennemtvinge referentiel integritet, skal du redigere relationen. Du finder flere oplysninger i afsnittet Rediger en relation.
Rediger en relation
Du kan ændre en relation ved at markere den i vinduet Relationer og derefter redigere den.
-
Placer markøren præcist, så den peger på relationslinjen, og klik derefter på linjen for at markere den.
Relationslinjen er tykkere, når den er markeret.
-
Dobbeltklik derefter på den valgte relationslinje.
– eller –
Klik på Rediger relationer i gruppen Værktøjer under fanen Relationer.
Dialogboksen Rediger relationer åbnes.
Åbn dialogboksen Rediger relationer
-
Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.
-
Klik på Alle relationer i gruppen Relationer under fanen Relationer.
Alle tabeller med relationer vises, og relationslinjerne er synlige. Bemærk, at skjulte tabeller (tabeller, hvor afkrydsningsfeltet Skjult er markeret i dialogboksen Egenskaber for tabellen) og deres relationer ikke vises, medmindre du har markeret Vis skjulte objekter i dialogboksen Navigationsindstillinger.
-
Klik på relationslinjen til den relation, du vil ændre. Relationslinjen er tykkere, når den er markeret.
-
Dobbeltklik på relationslinjen.
– eller –
Klik på Rediger relationer i gruppen Værktøjer under fanen Relationer.
Dialogboksen Rediger relationer åbnes.
-
Foretag de ønskede ændringer, og klik derefter på OK.
I dialogboksen Rediger relationer kan du ændre tabelrelationer. Du kan ændre tabellerne eller forespørgslerne på en af siderne af relationerne eller felterne på begge sider. Desuden kan du angive jointyperne, gennemtvinge referentiel integritet eller vælge en overlappende indstilling. Du kan finde flere oplysninger om jointypen, og hvordan den angives, i afsnittet Angive jointypen. Du kan finde flere oplysninger om, hvordan du gennemtvinger referentiel integritet og vælger en overlappende indstilling, i afsnittet Gennemtvinge referentiel integritet.
Angive jointypen
Når du definerer en tabelrelation, danner fakta om relationen udgangspunkt for udformningen af dine forespørgsler. Hvis du f.eks. definerer en relation mellem to tabeller og derefter opretter en forespørgsel, der anvender de to tabeller, vælger Access automatisk de felter, der matcher som standard, baseret på de felter, der er angivet i relationen. Du kan tilsidesætte disse umiddelbare standardværdier i din forespørgsel, men de værdier, der leveres af relationen, er ofte korrekte. Da du ofte kommer til at matche og samle data fra mere end én tabel i alle databaser bortset fra de mest enkle databaser, kan det være tidsbesparende og fordelagtigt at angive standarder ved at oprette relationer.
I en forespørgsel med flere tabeller kombineres oplysninger fra flere tabeller ved at matche værdierne i fælles felter. Denne handling kaldes en joinhandling. Lad os f.eks. sige, at du ønsker at vise kundeordrer. antages, at du vil have vist dine kunders ordrer, kan du oprette en forespørgsel, der joinforbinder tabellen Kunder og tabellen Ordrer på feltet Kunde-id. Forespørgselsresultatet indeholder kun kunde- og ordreoplysninger fra de rækker, hvor værdierne i feltet er ens.
En af de værdier, du kan angive for hver relation, er jointypen. Jointypen fortæller Access, hvilke poster der skal medtages i et forespørgselsresultat. Overvej f.eks igen en forespørgsel, der sammenkæder tabellen Kunder og tabellen Ordrer på de fælles felter, der repræsenterer kunde-id'et. Ved hjælp af standardjointypen (kaldet en indre joinforbindelse) returnerer forespørgslen kun Kunde-rækkerne og Ordre-rækkerne, hvor de fælles felter (også kaldet de joinforbundne felter) svarer til hinanden.
Men hvad så, hvis du vil inkludere alle kunder – også dem, der ikke har placeret ordrer endnu. Hvis du vil gøre det, skal du ændre jointypen fra en indre joinforbindelse til det, der kaldes en venstre ydre joinforbindelse. En venstre ydre joinforbindelse returnerer alle rækker i tabellen på venstre side af relationen og kun dem, der matcher, i tabellen til højre. En højre ydre joinforbindelse returnerer alle rækker til højre og kun dem, der matcher, til venstre.
Bemærk!: I dette tilfælde henviser "venstre" og "højre" til placeringen af tabellerne i dialogboksen Rediger relationer, ikke i vinduet Relationer.
Du skal overveje, hvilket resultat du oftest ønsker fra tabellerne i denne relation, og derefter angive jointypen i overensstemmelse hermed.
Angive jointypen
-
Klik på Jointype i dialogboksen Rediger relationer.
Dialogboksen Joinegenskaber vises.
-
Vælg dit valg, og klik derefter på OK.
I følgende tabel (der anvender tabellerne Kunder og Ordrer) vises de tre valgmuligheder i dialogboksen Joinegenskaber, den jointype, de anvender, og om alle rækker eller relaterede rækker returneres for hver tabel.
Valg |
Joinforbindelse |
Venstre tabel |
Højre tabel |
---|---|---|---|
1. Medtag kun rækker, hvor de joinforbundne felter fra begge tabeller er ens. |
Indre joinforbindelse |
Matchende rækker |
Matchende rækker |
2. Medtag ALLE poster fra "Kunder" og kun de poster fra "Ordrer", hvor de joinforbundne felter er ens. |
Venstre ydre joinforbindelse |
Alle rækker |
Matchende rækker |
3. Medtag ALLE poster fra "Ordrer" og kun de poster fra "Kunder", hvor de joinforbundne felter er ens. |
Højre ydre joinforbindelse |
Matchende rækker |
Alle rækker |
Hvis du vælger indstilling 2 eller 3, vises der en pil på relationslinjen. Denne pil peger på den side af relationen, hvor der kun vises matchende rækker.
Foretage ændringer i dialogboksen Joinegenskaber
-
Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.
-
Klik på Alle relationer i gruppen Relationer under fanen Relationer.
Alle tabeller, der har viste relationer, vises med relationslinjer. Bemærk, at skjulte tabeller (tabeller, hvor afkrydsningsfeltet Skjult er markeret i dialogboksen Egenskaber for tabellen) og deres relationer ikke vises, medmindre du har markeret Vis skjulte objekter i dialogboksen Navigationsindstillinger. -
Klik på relationslinjen til den relation, du vil ændre. Relationslinjen er tykkere, når den er markeret.
-
Dobbeltklik på relationslinjen. Dialogboksen Rediger relationer åbnes.
-
Klik på Jointype.
-
Vælg en indstilling i dialogboksen Joinegenskaber , og klik derefter på OK.
-
Foretag eventuelle yderligere ændringer af relationen, og klik derefter på OK.
Gennemtving referentiel integritet
Formålet med referentiel integritet er at forhindre uafhængige poster – poster, der refererer til andre poster, der ikke længere eksisterer. Du gennemtvinger referentiel integritet ved at aktivere det for en tabelrelation. Når referentiel integritet gennemtvinges i Access, afvises enhver handling, der kan bryde den referentielle integritet for den pågældende tabelrelation. Det betyder, at Access afviser opdateringer, der ændrer destinationen for en henvisning, og sletninger, der fjerner destinationen for en henvisning. Hvis du ønsker, at Access skal udbrede opdateringer og sletninger, så alle relaterede rækker ændres tilsvarende, kan du finde flere oplysninger i afsnittet Angiv kaskadeindstillingerne.
Aktivér og deaktiver referentiel integritet
-
Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.
-
Klik på Alle relationer i gruppen Relationer under fanen Relationer.
Alle tabeller med viste relationer, vises med relationslinjer. Bemærk, at skjulte tabeller (tabeller, hvor afkrydsningsfeltet Skjult er markeret i dialogboksen Egenskaber for tabellen) og deres relationer ikke vises, medmindre du har markeret Vis skjulte objekter i dialogboksen Navigationsindstillinger. -
Klik på relationslinjen til den relation, du vil ændre. Relationslinjen er tykkere, når den er markeret.
-
Dobbeltklik på relationslinjen. Dialogboksen Rediger relationer åbnes.
-
Vælg eller ryd Gennemtving referentiel integritet.
-
Foretag eventuelle yderligere ændringer af relationen, og klik derefter på OK.
Hvis du gennemtvinger referentiel integritet, træder følgende regler i kraft:
-
Du kan ikke angive en værdi i fremmed nøgle-feltet i en relateret tabel, hvis denne værdi ikke findes i primær nøgle-feltet i den primære tabel. Hvis du gør det, oprettes der uafhængigt poster.
-
Du kan ikke slette en post fra en primær tabel, hvis der findes tilsvarende poster i en relateret tabel. Du kan f.eks. ikke slette en medarbejderpost fra tabellen Medarbejdere, hvis der er ordrer, der er tildelt den pågældende medarbejder i tabellen Ordrer. Du kan dog vælge at slette en primær post og alle relaterede poster i én handling ved at markere afkrydsningsfeltet Kaskadevis sletning af relaterede poster.
-
Du kan ikke ændre en primær nøgleværdi i den primære tabel, hvis det medfører, at der oprettes uafhængige poster. Du kan f.eks. ikke ændre et ordrenummer i tabellen Ordrer, hvis der er linjeelementer, der er tildelt den pågældende ordre i tabellen Ordredetaljer. Du kan dog vælge at opdatere en primær post og alle relaterede poster i én handling ved at markere afkrydsningsfeltet Kaskadevis opdatering af relaterede felter.
Bemærkninger!: Hvis du har problemer med at aktivere referentiel integritet, skal du være opmærksom på, at følgende forudsætninger skal være opfyldt for at gennemtvinge referentiel integritet:
-
Det fælles felt fra den primære tabel skal være en primær nøgle eller have et entydigt indeks.
-
De fælles felter skal have samme datatype. Den eneste undtagelse er autonummereringsfelter, der kan relateres til et talfelt, hvis egenskaben Feltstørrelse er angivet til Langt heltal.
-
Begge tabeller findes i den samme Access-database. Referentiel integritet kan ikke gennemtvinges i sammenkædede tabeller. Hvis kildetabellerne er i Access-format, kan du dog åbne den database, de er gemt i, og aktivere referentiel integritet i denne database.
-
Angiv kaskadeindstillingerne
Der kan opstå en situation, hvor du har brug for at ændre værdien på en-siden af en relation. Hvis det er tilfældet, har du brug for, at Access automatisk opdaterer alle de påvirkede rækker som en del af en enkelt handling. På den måde udføres opdateringen fuldt ud, så databasen ikke efterlades i en ikke-overensstemmende tilstand, hvor nogle rækker er opdateret og andre ikke er. Access hjælper dig med at undgå dette problem ved at understøtte funktionen Kaskadevis opdatering af relaterede felter. Når du gennemtvinger referentiel integritet og vælger indstillingen Kaskadevis opdatering af relaterede felter, og du derefter opdaterer en primær nøgle, opdaterer Access automatisk alle felter, der henviser til den primære nøgle.
Der kan også være brug for at slette en række og alle relaterede poster – f.eks. en post for et speditionsfirma og alle de poster, der er relateret til det pågældende speditionsfirma. Derfor understøtter Access indstillingen Kaskadevis sletning af relaterede poster. Når du gennemtvinger referentiel integritet og markerer afkrydsningsfeltet Kaskadevis sletning af relaterede poster, sletter Access automatisk alle de poster, der refererer til den primære nøgle, når du sletter den post, der indeholder den primære nøgle.
Aktivér eller deaktiver kaskadevis opdatering eller sletning
-
Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.
-
Klik på Alle relationer i gruppen Relationer under fanen Relationer.
Alle tabeller med viste relationer, vises med relationslinjer. Bemærk, at skjulte tabeller (tabeller, hvor afkrydsningsfeltet Skjult er markeret i dialogboksen Egenskaber for tabellen) og deres relationer ikke vises, medmindre du har markeret Vis skjulte objekter i dialogboksen Navigationsindstillinger. -
Klik på relationslinjen til den relation, du vil ændre. Relationslinjen er tykkere, når den er markeret.
-
Dobbeltklik på relationslinjen.
Brug Rediger relationer vises. -
Markér afkrydsningsfeltet Gennemtving referentiel integritet.
-
Markér afkrydsningsfeltet Kaskadevis opdatering af relaterede felter eller Kaskadevis sletning af relaterede poster, eller markér dem begge.
-
Foretag eventuelle yderligere ændringer af relationen, og klik derefter på OK.
Bemærk!: Hvis den primære nøgle er et felt af typen Autonummerering, vil markering af afkrydsningsfeltet Kaskadevis opdatering af relaterede felter ikke have nogen betydning, fordi du ikke kan ændre værdien i et felt af typen Autonummerering.
Slette en tabelrelation
Vigtigt!: Når du fjerner en relation, fjerner du også en eventuel understøttelse af referentiel integritet for denne relation, hvis det er aktiveret. Det betyder, at oprettelse af uafhængige poster på "mange"-siden af en relation ikke længere forhindres automatisk af Access.
Hvis du vil fjerne en tabelrelation, skal du slette relationslinjen i vinduet Relationer. Placer markøren, så den peger på relationslinjen, og klik derefter på linjen. Relationslinjen er tykkere, når den er markeret. Tryk på Delete, når relationslinjen er markeret.
-
Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.
-
Klik på Alle relationer i gruppen Relationer under fanen Relationer.
Alle tabeller med viste relationer, vises med relationslinjer. Bemærk, at skjulte tabeller (tabeller, hvor afkrydsningsfeltet Skjult er markeret i dialogboksen Egenskaber for tabellen) og deres relationer ikke vises, medmindre du har markeret Vis skjulte objekter i dialogboksen Navigationsindstillinger. -
Klik på relationslinjen til den relation, du vil slette. Relationslinjen er tykkere, når den er markeret.
-
Tryk på Delete.
-
Følgende meddelelse vises muligvis i Access: Er du sikker på, at du vil slette den markerede relation permanent fra databasen?. Hvis det er tilfældet, skal du klikke på Ja.
Bemærk!: Hvis en af tabellerne i tabelrelationen er i brug, evt. af en anden person eller proces, eller i et åbent databaseobjekt (f.eks. en formular), kan du ikke slette relationen. Du skal lukke alle åbne objekter, der anvender disse tabeller, før du prøver at fjerne relationen.
Se også
Tilføj et opslagsfelt til en tabel
Sammenligne to tabeller i Access, og find kun matchende data