Det här är ett avsnitt i en webbkurs om databaser som finns fritt tillgänglig på adressen http://www.databasteknik.se/webbkursen/. Senaste ändring: 16 juli 2005.

Av Thomas Padron-McCarthy. Copyright, alla rättigheter reserverade, osv. Skicka gärna kommentarer till webbkursen@databasteknik.se.

Introduktion till Microsoft Access

Det här avsnittet beskriver en äldre version av Access. Motsvarande kapitel i boken Databasteknik är uppdaterat med information om de senaste versionerna.

Jag är inte expert på Microsoft Access, eller på Microsofts övriga produkter. Därför är det förmodligen ingen idé att fråga mig om annat än mycket enkla saker när det gäller Microsoft-specifika tekniker och produkter. Det gäller till exempel Access, ASP och IIS. Men skicka gärna kommentarer till mig om du hittar något som verkar vara fel i det här avsnittet.

Microsoft Access är en vanligt förekommande kommersiell databashanterare. från Microsoft. Den har ett lättanvänt grafiskt användargränssnitt. Den underliggande funktionaliteten, till exempel SQL-dialekten, är inte lika avancerad som i en del andra databashanterare. Den fungerar enbart tillsammans med operativsystemet Windows.

Det här avsnittet beskriver Microsoft Access 2000, som är den version av Access som ingår i Microsoft Office 2000. Skillnaderna jämfört med den tidigare versionen Access 97 (som ingår i Office 97) och den nyare Access 2002 (som ingår i Office XP) är inte så stora, när det gäller den grundfunktionalitet som beskrivs här. Det finns dock några korta kommentarer om skillnaderna mellan de olika versionerna av Access sist i det här avsnittet.

Läs mer på Microsofts egna webbsidor:

Intressanta artiklar om Access finns också på http://databases.about.com/cs/access/.

Starta Microsoft Access

Starta Microsoft Access genom att klicka på Start-knappen, sen på Program och sen på Microsoft Access. Access startar, och det kommer fram ett litet fönster där man får välja vilken databas man vill arbeta med. (En Access-databas lagras som en fil någonstans på hårddisken.) Välj Exempeldatabasen Northwind:

Databasväljarfönstret

Det kan hända att exempeldatabasen inte är installerad på datorn. I så fall kan du installera den nu, om du har tillgång till en installations-CD för Office 2000:

Installation-eller-inte-fönstret

När du har öppnat exempeldatabasen Northwind kommer Access att köras i ett fönster som ser ut så här (förutom att du kanske har valt ett annat färgschema på din dator):

Access-fönstret, när man öppnad Northwind-databasen

Förmodligen dyker det också upp ett fönster som hälsar dig välkommen till Northwind Traders. Klicka bara på OK så att det försvinner. (Det fönstret ingår egentligen inte i Access, utan det är en finess som man lagt till just i databasen Northwind, som en del av själva databasen.)

Databasfönstret

Access har egna fönster som man kan flytta omkring inuti det större Access-fönstret. Databasen Northwind syns nu i ett databasfönster som ser ut så här:

Northwind-databasfönstret: Formulär

Databasen som man har öppnat och arbetar med syns i databasfönstret. Med hjälp av det kan du studera och ändra i databasen, både dess schema och dess data.

Till vänster i databasfönstret finns en meny, och där kan man välja vilken typ av databasobjekt som man vill visa just nu i databasfönstret.

Tabeller

Klicka på Tabeller i menyn till vänster i databasfönstret, så får du se vilka tabeller som finns i Northwind-databasen:

Northwind-databasfönstret: Tabeller

Nu visar databasfönstret vilka tabeller som finns i databasen. Om du vill titta på innehållet i en tabell så öppnar du tabellen genom att dubbelklicka på den, eller genom att högerklicka och välja Öppna i menyn som kommer fram, eller genom att markera tabellen och sen klicka på Öppna upptill i databasfönstret. Ett fönster med tabellens innehåll öppnas. Access kallar detta för ett datablad (på engelska Datasheet View):

Datablad för tabellen Anställda

Tabellen Anställda innehåller fler kolumner än vad som får plats i fönstret, men man kan flytta sig i sidled med den vågräta rullningslisten. Om det finns fler rader än vad som får plats, kan man flytta sig bland raderna med den lodräta rullningslisten. De små knapparna längst ner används också för att flytta sig mellan raderna. (Där ser man också att Access ibland kallar raderna i tabellen för poster.)

Man kan ändra på tabellens innehåll genom att göra ändringar i databladet:

Att göra ändringar i databladet

Det är ett av sätten som man kan lägga in och ändra innehållet i en Access-databas, men för att underlätta för användarna brukar man skapa särskilda formulär för att lägga in data. (Mer om formulär senare.)

Stäng databladet. Om databasfönstret var dolt av databladet, så syns det igen nu:

Northwind-databasfönstret: Tabeller

Det var tabellens innehåll. Man kan också titta på tabellens schema, eller design som Access kallar det. Markera tabellen och klicka på Design upptill i databasfönstret, eller högerklicka på tabellen och välj Design i menyn som kommer fram. Det här fönstret visar vilka kolumner som tabellen består av, och deras datatyper. (Notera att Access kallar kolumnerna för fält.)

Design för tabellen Anställda

Design och datablad kallas för olika visningslägen. Som vi kommer att se nedan så kan alla typer av databasobjekt, inte bara tabellerna, visas i ett eller flera visningslägen. Det finns alltid ett designläge, där man kan göra ändringar i själva objektet. För de flesta typerna av objekt finns det ett eller flera visningslägen som visar objektet "i arbete". För tabeller ser man alltså innehållet som ett datablad, och man kan bläddra bland raderna, göra ändringar, och även enkla sökningar.

Skapa nya tabeller

Det finns flera olika sätt att skapa en ny tabell i Access. Först i listan med tabeller i databasfönstret finns tre alternativ:

Tre olika sätt att skapa en ny tabell

Den mest naturliga metoden för en van databasanvändare är kanske alternativet Skapa en tabell i designläge. Då får man upp ett tomt schema (en tom "design", som Access skulle säga), och så talar man om vad kolumnerna ska heta och vilka datatyper de har:

Skapa en tabell i designläge

Det finns också en guide (på engelska wizard) som gör det enkelt att skapa några vanliga typer av tabeller, till exempel ett adressregister eller en kundtabell. Guiden hjälper också till med att att välja primärnyckel, och eventuella kopplingar mellan den nya tabellen och andra tabeller i databasen.. Dessutom kan den automatiskt skapa ett formulär för inmatning av data i tabellen.

Skapa en tabell genom att använda en guide

Ett tredje sätt är att skapa en tabell genom att mata in data. Dubbelklicka på Skapa en tabell genom att mata in data, så kommer det upp ett tomt datablad. Mata in lite data. Access kommer nu att gissa hur du vill att tabellens schema ska se ut!

Skapa en tabell genom att mata in data

Om man klickar på alternativet Ny i databasfönstrets menyrad (symbolen Symbolen för Ny), så hittar man ytterligare två sätt att skapa tabeller: genom att importera och länka tabeller. Att importera en tabell betyder att man kopierar en tabell från en annan Access-databas. Om man länkar till den, så ligger tabellen kvar i den andra Accessdatabasen, men man kan använda den i sökningar och uppdatering som görs i den här databasen.

Dessutom fungerar det faktiskt också att skriva vanliga create table-kommandon i SQL i Access, men det verkar inte vara en metod som Microsoft har tänkt sig att man ska använda.

Språkförbistring: Vad är en "relation"?

Access är en relationsdatabashanterare, dvs en databashanterare som lagrar sina data i tabeller. Tabellerna i en relationsdatabas refererar till varandra med referensattribut, även kallade främmande nycklar. Ett exempel från Northwind-databasen är att tabellen Order har en kolumn som heter Skicka med, och som anger vilken speditör (eller "transportfirma") som man ska skicka ordern med när den levereras. För en viss order kanske det står 3 i kolumnen Skicka med. Då går man till tabellen Speditör och letar reda på den speditör som har 3 som Speditörsnr, och ser att det är en speditör som heter Federal Shipping.

I engelskspråkiga versioner av Access kallar man en sån koppling för ett relationship, och det har Microsofts svenska översättare valt att översätta med ordet relation. Det är en dålig översättning, eftersom det ordet redan är upptaget: Relationerna i en relationsdatabas är själva tabellerna.

Det finns också en del andra ovanliga sätt att uttrycka sig i Access och dess dokumentation. Till exempel kallar de främmande nycklar för sekundärnycklar.

Kopplingar mellan tabellerna

Både när man skapar tabeller och efteråt kan man ange vilka kopplingar med referensattribut (även kallade främmande nycklar) som finns mellan tabellerna.

Kom ihåg: Access kallar kopplingarna mellan tabellerna för "relationer". Det är fel. Det är själva tabellerna som heter "relationer".

Börja med att öppna fönstret med kopplingarna mellan tabeller. Klicka på Verktyg i menyraden överst i Access-fönstret, och välj Relationer:

Kopplingar mellan tabellerna

Så här ser fönstret med tabellkopplingarna ut:

Kopplingar mellan tabellerna: Fönstret "Relationer"

Det här är inte ett ER-diagram. Rutorna föreställer tabeller, inte ER-modellens entitetstyper, och strecken mellan tabellerna är kopplingar med referensattribut, inte ER-modellens sambandstyper.

Genom att dubbelklicka på en av kopplingarna, till exempel den mellan Kunder och Order, kan vi studera detaljerna för den kopplingen:

Detaljerna för ett samband

Det här betyder att kolumnen Kundnr i tabellen Order refererar till kolumnen Kundnr i tabellen Kunder. (Varje rad i ordertabellen motsvarar en order, och i kolumnen Kundnr står det vilken kund som skickat in den ordern.)

1:N betyder att en kund kan skicka in många order, men att varje order hör ihop med en enda kund. (Och nej, det är fortfarande inget ER-diagram.)

Som synes kan man kryssa för om Access ska upprätthålla referensintegritet, och hur den i så fall ska göra. Här har vi markerat att ja, Access ska se till att referensintegriteten upprätthålls, och om kundens nummer ändras så ska kundnumret också ändras i de order som den kunden skickat in. (Det här motsvarar konstruktionen on update cascade i SQL. Läs mer i kursavsnittet Integritetsvillkor.)

Om man försöker ta bort en kund ur databasen, och det finns rader i Order-tabellen som refererar till den kunden, så misslyckas försöket, och man får i stället ett meddelande om det:

Gemet klagar

Om vi klickar på knappen Kopplingstyp öppnas ett fönster där vi kan välja hur den här kopplingen ska användas i frågor. Uttryckt i relationsalgebra betyder det att vi väljer om kopplingen mellan tabellerna ska göras med en vanlig join, en vänster-yttre join, eller en höger-yttre join. Full yttre join går inte att ange.

Val av join-typ

Frågor

Gå tillbaka till databasfönstret, och klicka på Frågor i menyn till vänster. Nu visas de frågor som definierats i Northwind-databasen:

Northwind-databasfönstret: Frågor

Det som Access kallar frågor motsvarar både det som brukar kallas frågor (SQL-kommandot select ...) och det som brukar kallas vyer (SQL-kommandot create view ... as ...). En vy i SQL är ju egentligen en fråga som sparats och fått ett namn.

Vi kan köra en av frågorna genom att dubbelklicka på den, eller markera den och sen klicka på Öppna i listen högst upp i databasfönstret. Nu körs frågan, och resultatet kommer upp i ett fönster. Precis som för tabeller kallas det för ett datablad.

Datablad för frågan Produkter dyrare än genomsnittet

Det var resultatet av frågan. Man kan också titta på definitionen av frågan. Högerklicka på frågan i databasfönstret, eller högerklicka direkt på databladets namnlist, och välj sen Design i menyn som kommer fram.

Design för frågan Produkter dyrare än genomsnittet

Om man studerar den här designen ser man att frågan baseras på tabellen Produkter, att den ska visa kolumnerna Produktnamn och Enhetspris, sorterat i fallande ordning efter Enhetspris, och att den bara tar med de produkter som är dyrare än genomsnittspriset för en produkt.

Den frågan kan du kanske formulera med SQL, och kan man tänka sig, det kunde Access också! Högerklicka på namnlisten i designfönstret och välj menyalternativet SQL. Access har översatt designen ovan till en SQL-fråga som ser ut så här:

SQL för frågan Produkter dyrare än genomsnittet

Vi förenklar lite, och ser att det är helt vanlig och fullt begriplig SQL (för den som kan SQL):

SELECT DISTINCTROW Produktnamn, Enhetspris
FROM Produkter
WHERE Enhetspris > (SELECT AVG(Enhetspris) FROM Produkter)
ORDER BY Enhetspris DESC;
Precis som med en tabell som visas som ett datablad så går det att ändra i en fråga som visas som ett datablad. Ändringarna görs i den tabell, eller de tabeller, som frågan baseras på. Genom att ändra ett produktnamn som visas i resultatet av den här frågan, ändrar vi namnet på en produkt i tabellen Produkter:

Att göra ändringar i databladet

En mer komplicerad fråga

Vi går tillbaka till databasfönstret och väljer frågan Fakturor:

Northwind-databasfönstret: Frågor

Frågan Fakturor är en ganska komplicerad fråga, som hämtar data från flera olika tabeller för att räkna ut information om fakturor. Den tittar till exempel i tabellen Order för att se vem som har gjort beställningen, den tittar i tabellen Orderspecifikationer för att se vilka produkter som kunden har beställt, den tittar i tabellen Produkter efter vad de levererade sakerna heter, och så vidare. Varje rad i resultatet av frågan motsvarar en faktura från vårt företag till en av våra kunder.

Vi kör frågan, eller "öppnar" den som Access säger, och tittar på resultatet:

Dastablad för frågan Fakturor

Högerklicka och välj Design. Så här ser designen av frågan ut:

Design för frågan Fakturor

Notera hur tabellerna har kopplats ihop för att visa hur raderna i olika tabeller hör ihop i frågan.

Överkurs för den som kan SQL

Högerklicka igen på designfönstret för frågan Fakturor, och välj SQL. Access har översatt designen ovan till en SQL-fråga som ser ut så här:

SQL för frågan Fakturor

Ojojoj. Så här blir det i textform:

SELECT DISTINCTROW [Order].[Leveransmottagare],
[Order].[Leveransadress], [Order].[Leveransort],
[Order].[Leveransregion], [Order].[Leveranspostnummer],
[Order].[Leveransland], [Order].[Kundnr], [Kunder].[Företagsnamn],
[Kunder].[Adress], [Kunder].[Ort], [Kunder].[Region],
[Kunder].[Postnummer], [Kunder].[Land], [Förnamn] & " " & [Efternamn]
AS Säljare, [Order].[Ordernr], [Order].[Orderdatum],
[Order].[Begärt leveransdatum], [Order].[ExpedieratDen],
[Speditörer].[Företagsnamn], [Orderspecifikationer].[Produktnr],
[Produkter].[Produktnamn], [Orderspecifikationer].[Enhetspris],
[Orderspecifikationer].[Antal], [Orderspecifikationer].[Rabatt],
CCur([Orderspecifikationer].[Enhetspris]*[Antal]*(1-[Rabatt])/100)*100
AS SlutligtPris, [Order].[Frakt] FROM Speditörer INNER JOIN (Produkter
INNER JOIN ((Kunder INNER JOIN (Anställda INNER JOIN [Order] ON
[Anställda].[Anställningsnr]=[Order].[Anställningsnr]) ON
[Kunder].[Kundnr]=[Order].[Kundnr]) INNER JOIN Orderspecifikationer ON
[Order].[Ordernr]=[Orderspecifikationer].[Ordernr]) ON
[Produkter].[Produktnr]=[Orderspecifikationer].[Produktnr]) ON
[Speditörer].[Speditörsnr]=[Order].[Skicka med];
Som synes kan de SQL-frågor som Access genererar bli ganska komplicerade. Det beror förstås delvis på att de sökningar som görs ibland är komplicerade, men det beror också på att Access gör en del specialsaker med sina frågor.

Det är en massa kolumner som ska vara med i svaret, så den delen av frågan kan man inte göra så mycket åt. Men titta på resten:

...
FROM Speditörer INNER JOIN (Produkter INNER JOIN ((Kunder INNER JOIN
(Anställda INNER JOIN [Order] ON
[Anställda].[Anställningsnr]=[Order].[Anställningsnr]) ON
[Kunder].[Kundnr]=[Order].[Kundnr]) INNER JOIN Orderspecifikationer ON
[Order].[Ordernr]=[Orderspecifikationer].[Ordernr]) ON
[Produkter].[Produktnr]=[Orderspecifikationer].[Produktnr]) ON
[Speditörer].[Speditörsnr]=[Order].[Skicka med];
Access har kopplat ihop tabellerna med explicita inre joinar mellan alla tabellerna. I SQL brukar man hellre räkna upp de tabeller som ska användas, i FROM-delen av frågan, och sen ange hur de kopplas ihop i WHERE-villkoret:
...
FROM Speditörer, Produkter, Kunder, Anställda, [Order], Orderspecifikationer
WHERE Anställda.Anställningsnr = [Order].Anställningsnr
  AND Kunder.Kundnr = [Order].Kundnr
  AND [Order].Ordernr = Orderspecifikationer.Ordernr
  AND Produkter.Produktnr = Orderspecifikationer.Produktnr
  AND Speditörer.Speditörsnr = [Order].[Skicka med];
(Tabellen Order måste skrivas som [Order] i frågan, eftersom ORDER är ett reserverat ord i SQL. Det används i konstruktionen order by.)

Det finns två skäl till att Access kopplar ihop tabellerna med explicita inre joinar:

Skapa nya frågor

Man kan skapa nya frågor grafiskt, antingen genom att bygga dem i designläget eller med hjälp av en guide. I bägge fallen kommer Access automatiskt att hitta de kopplingar med referensattribut som finns mellan tabellerna, och ta med dem i frågan.

Formulär

Med hjälp av formulär kan man visa sina data snyggt på skärmen, och låta användaren mata in och redigera uppgifter.

Gå tillbaka till databasfönstret och klicka på Formulär i menyn till vänster:

Northwind-databasfönstret: Formulär

Nu visar databasfönstret vilka formulär som finns i databasen. Om du vill använda ett av formulären för att ändra eller titta på data, så öppnar du det, enklast genom att dubbelklicka på det. Det här visningsläget, med formuläret i arbete, kallas formulärläge:

Formuläret Anställda

Det här formuläret heter Anställda, vilket råkar vara samma namn som en av tabellerna, och som man kanske kan gissa så kan man använda formuläret för att bläddra bland, läsa och ändra de uppgifter om de anställda som finns i den tabellen.

Du kan också titta på formuläret i designläge, enklast genom att högerklicka på formulärfönstrets titelrad och välja Formulärdesign i menyn som kommer fram:

Design av formuläret Anställda

Det dyker också upp ett litet fönster med en verktygslåda med olika fält och knappar som man kan använda när man bygger ett formulär:

Verktygslåda för formulär

Du kan också visa en del ytterligare detaljer om formuläret Anställda genom att högerklicka på formulärfönstrets namnlist, och välja Egenskaper i menyn som kommer fram:

Visa egenskaper för formuläret Anställda

En av de mer intressanta egenskaperna är datakällan, som anger från vilken tabell (eller fråga!) som Access ska hämta de data som visas i formuläret. I det här fallet hämtas data från tabellen Anställda:

Egenskaper för formuläret Anställda: Data

Man kan ändra formulärets datakälla genom att klicka på den lilla nedåtpilen och välja en annan tabell eller fråga:

Att ändra datakällan för formuläret Anställda

Men få fungerar formuläret förmodligen inte längre, för kolumnerna i den tabellen eller frågeresultatet stämmer inte med vad formuläret förväntar sig:

Ett felmeddelande

Om man vill skapa ett nytt formulär kan man bygga upp det grafiskt i designläget. Det finns också flera olika guider för att snabbt skapa några vanliga typer av formulär.

Rapporter

Rapporter används för att ta fram pappersutskrifter med sammanställningar av databasens innehåll. Rapporter fyller delvis samma funktion som formulär, men på papper i stället för på skärmen, och (förstås) bara för listningar och sammanställningar, inte inmatning.

Gå tillbaka till databasfönstret och klicka på Rapporter i menyn till vänster:

Northwind-databasfönstret: Rapporter

Dubbelklicka på rapporten Kundetiketter för att öppna den i ett fönster. Nu visas rapporten som den kommer att se ut när man skriver ut den på papper. Det kallas att förhandsgranska rapporten.

Förhandsgranskning av rapporten Kundetiketter

Eftersom rapporten ska skrivas ut på papper med en skrivare, så beror det exakta utseendet på vilken skrivare man använder. Om man inte har någon skrivare installerad, kan man därför inte förhandsgranska rapporter:

Man måste ha en skrivare installerad

För att skriva ut rapporten klickar du på Arkiv på menyraden i Access-fönstret, och väljer sen Skriv ut. Man kan också klicka på skrivarsymbolen (Skrivarsymbolen).

Man kan också titta på rapportens design. Högerklicka på rapporten i databasfönstret, och välj Design i menyn som kommer fram.

Design av rapporten Kundetiketter

Det här är designen av en enskild etikett. I utskriften av rapporten får vi flera etiketter bredvid varandra på varje sida, men det bestämmer vi under fliken Format i egenskapsfönstret (se nedan).

Det dyker också upp ett litet fönster med en verktygslåda med olika fält och knappar som man kan använda när man bygger en rapport:

Verktygslåda för rapporter

Du kan också visa en del ytterligare detaljer om rapporten Kundetiketter genom att högerklicka på rapportfönstrets namnlist, och välja Egenskaper i menyn som kommer fram. På samma sätt som för formulär så har vi en datakälla, som i det här fallet är tabellen Kunder:

Egenskaper för rapporten Kundetiketter: Data

Under fliken Format kan man titta på hur data ska formateras på papperen vid utskriften, till exempel med sidhuvuden och sidfötter:

Egenskaper för rapporten Kundetiketter: Format

Man kan skapa en ny rapport genom att bygga upp den grafiskt i designläget. Det finns också flera olika guider för att snabbt skapa några vanliga typer av rapporter, till exempel diagram och etikettlistor.

Dataåtkomstsidor

I Access 2000 (men inte Access 97) kan man skapa webbsidor som är kopplade till en Access-databas. Dataåtkomstsidor fyller delvis samma funktion som formulär, nämligen att visa data snyggt på skärmen och låta användaren mata in och redigera uppgifter, men i en webbläsare i stället för i programmet Access.

De här dataåtkomstsidorna är inte vanliga webbsidor, som låter oss arbeta med data som finns centralt på en webbserver. Det går inte att arbeta med databasen via webben. Man måste ha direkt tillgång till filen som Access-databasen lagras i, antingen lokalt på datorn eller via ett nätverk. Dataåtkomstsidorna använder sig av särskilda Office-funktioner, som körs lokalt på samma dator som webbläsaren, och som jobbar direkt mot databasfilen. För att de ska fungera måste användaren köra Windows, med Internet Explorer, och ha Microsoft Office installerat. Och, som sagt, kunna komma åt databasen som en vanlig fil. (Det är egentligen rätt naturligt, om man vet hur Access fungerar inuti: Access har ingen server som är igång hela tiden, och som webbläsaren skulle kunna prata med.)

Det går alltså inte att bygga databasbaserade webbplatser med dataåtkomstsidor. Dataåtkomstsidorna är inte ett sätt att komma åt en databas via webben, utan ett sätt att bläddra i en lokal databas och visa dess innehåll i Internet Explorer i stället för i Access. (Men det går att skapa "riktiga" webbsidor på annat sätt med Access. Läs mer om det i nästa stycke.)

Disclaimer: Det är vad jag förstått, utifrån dokumentationen och egna experiment. Jag har sett påståenden om att man trots allt kan göra dataåtkomstsidor som faktiskt går att använda för att komma åt databasen via webben, men jag har inte lyckats, och jag har tolkat Microsofts egen dokumentation som att det inte går.

Gå tillbaka till databasfönstret och klicka på Sidor i menyn till vänster. "Sidor" betyder dataåtkomstsidor.

Northwind-databasfönstret: Dataåtkomstsidor

Vi skapar en enkel dataåtkomstsida, som låter oss bläddra bland de anställda. Det gör vi genom att klicka på Ny i menylisten i databasfönstret, välja Sidguiden, och sen välja tabellen Anställda som datakälla. Sen markerar vi vilka av kolumnerna i den tabellen som vi vill ha med, och sparar sidan. Så här ser den ut när vi öppnar den i Internet Explorer:

Dataåtkomstsidan Anstallda.html

Det går att bläddra bland de anställda, man kan ändra uppgifterna, och det går att lägga till och ta bort anställda. Men det fungerar alltså inte om man inte har själva databasfilen tillgänglig, och då kan man lika gärna göra det här som ett formulär, och arbeta i Access i stället för i Internet Explorer.

Access och webben

Vi såg ovan att dataåtkomstsidor inte fungerar för att bygga databasbaserade webbplatser. Men man kan ändå skapa både statiska och dynamiska webbsidor med Access.

Men de sätt som finns i Access för att låta Access själv skapa webbsidor (dataåtkomstsidor och export till HTML eller ASP) med hjälp av olika guider, är inte i första hand tänkta för att skapa databasbaserade webbplatser i vanlig mening, utan de är mer tänkta för att man skall kunna erbjuda ett alternativ till ren Access på ett intranät. För att bygga databasbaserade webbplatser med en Access-databas i botten vill man kanske hellre skriva egna ASP- eller CGI-sidor, som arbetar med Access-databas, eller använda något av de olika grafiska verktyg som finns för att skapa sådana webbsidor.

Makron

Makron är en sorts små programsnuttar som består av en följd instruktioner, som var och utför en viss operation, till exempel att öppna ett formulär eller skriva ut en rapport.

Gå tillbaka till databasfönstret och klicka på Makron i menyn till vänster:

Northwind-databasfönstret: Makron

Låt oss lite kort titta på makrot som heter Kundetiketter (dialogruta). Det används när man vill skriva ut kundetiketter. Det finns ett formulär med samma namn, Kundetiketter (dialogruta), och när man öppnar det så ser det ut så här:

Formuläret Kundetiketter (dialogruta)

I det här formuläret kan man välja vilka kunder man vill skriva ut etiketter för, baserat på land, och man kan förhandsgranska och skriva ut etiketterna.

När man skapar ett formulär kan man lägga in olika typer av fält som visar data på olika sätt, och som man kan mata in data i, men för att göra mer avancerade saker måste man koppla ett makro till formuläret. Utskriften av etiketter görs ju i en rapport (som beskrivs ovan), och är inte en del av formuläret. På något sätt måste man alltså koppla ihop formuläret med rätt rapport. Det görs i makrot Kundetiketter (dialogruta).

Titta på designen av makrot:

Design av makrot Kundetiketter (dialogruta)

Makrot talar om vad som ska hända när man klickar på knapparna i formuläret (Granska, Skriv ut och Avbryt), och det ser också till att landsväljarrutan bara fungerar om man först klickar på Ett land:

Formuläret Kundetiketter (dialogruta)

Moduler

Ibland vill man göra mer avancerade saker i Access än vad som går att göra med makron. Då kan man skriva program i Microsofts älsklingsprogrammeringsspråk Visual Basic. Visual Basic finns nämligen med i Access, i en (begränsad) variant som heter Visual Basic for Applications.

En eller flera programsnuttar i Visual Basic for Applications, som man sparar tillsammans som en enhet i Access, kallas för en modul. Moduler kan vara kopplade till ett visst formulär eller rapport, och de kan också vara fristående.

Gå tillbaka till databasfönstret och klicka på Moduler i menyn till vänster:

The Northwind database window: Modules

Vi öppnar modulen Start i designläget genom att dubbelklicka på den, eller genom att högerklicka och välja Design. Modulen, med de ingående procedurerna, öppnas i ett eget Visual Basic-fönster:

Designläge för modulen Start

Hjälp

Det finns en ganska bra hjälpfunktion i Access, med omfattande beskrivningar av vad saker är, hur de fungerar, och hur man använder dem. Klicka på hjälp-symbolen (Hjälpsymbolen från menylisten) på menylisten. så kommer Office-assistenten fram, och låter dig söka i hjälpen:

Vår gamle kompis gemet: Sökning

Här är ett exempel på hur hjälpen ser ut, nämligen inledningen av introduktionen till moduler:

Hjälpfönstret

Fler finesser

En bra egenskap i Microsoft Access 2000 är att man kan länka till externa tabeller, det vill säga tabeller i en annan databas. Det kan vara en annan Access-databas, men också en databas som lagras i någon helt annan typ av databashanterare. Tabellerna dyker upp i Access, de ser ut som de tabeller som lagras i Access-databasen, och de kan användas i sökningar, men egentligen finns de alltså i en annan databas.

Klicka på Arkiv, Hämta externa data och Länka externa tabeller. Nu kan man välja mellan ett antal olika "filformat", bland dem ODBC-databaser. Där kan man alltså länka till tabeller i vilken databas som helst som kan nås via ODBC. Nästan alla relationsdatabashanterare har ODBC-stöd.

Med hjälp av dessa länkar kan man använda Access för enkel åtkomst, med ett lättanvänt användargränssnitt, till andra databaser.

Prestanda

Microsofts Access utmålas ofta som en "liten" databashanterare, vilket den ju också är jämfört med till exempel DB2, Oracle eller SQL Server. Därför får jag ibland frågor om ifall Access klarar av lite större mängder data. Klarar den till exempel tusen rader i en tabell? Det gör den förstås. Tusen rader är väldigt lite i databassammanhang, och Access är ju faktiskt en databashanterare.

Bara för att testa la jag in en miljon rader i en tabell i Access 2000. Det tog fyra minuter att fylla tabellen från en textfil, men sen gick den snabbt och enkelt att jobba med. Ska man lista hela miljonen poster tar det förstås en liten stund bara att mata fram dem, men till exempel att slå upp en post med ett visst värde i ett fält ger ingen märkbar fördröjning alls, om man har ett index på det fältet. När jag provade utan index tog det tre sekunder.

Kort om Access 97

Den version av Microsoft Access som ingår i Office 97 kallas Access 97. Det är inga större skillnader mellan Access 97 och Access 2000, som är den version som beskrivits här. Användargränssnittet i Access 2000 är snyggare och mer lättjobbat, men funktionaliteten är ungefär samma. En nyhet i Access 2000 är dataåtkomstsidor, men jag tycker inte att de är särskilt användbara, utan de verkar mest vara till för att Microsoft skulle kunna använda ordet "webb" i reklamen.

Kort om Access 2002

Den version av Microsoft Access som ingår i Office XP kallas Access 2002. Två nyheter i Access 2002:


Webbkursen om databaser av Thomas Padron-McCarthy.